2012-03-23 11 views
0

私は、クラスタ化アルゴリズムに取り組んでいますし、それがデータをクラスタ化した後にするとき、それは例えば、文書の単一のドキュメント(クラスDOC)とグループ(クラス・グループ)が含まれているリストを返します:Pythonで未知のサブリストを含むリストを繰り返しますか?

Group(Document(id='NSVcteD-5', name=u'1332410487000-2ed0728e9015028e7c41341011a1bd82'), Group(Document(id='NSVcteD-11', name=u'1332410485000-18ae371b18b3790874fb886085c770af'), Group(Document(id='NSVcteD-12', name=u'1332410484000-dc544efc146674289b126062b000a302'), Group(Document(id='NSVcteD-6', name=u'1332410487000-25e815a47779642df2a416495bd5174c'), Group(Document(id='NSVcteD-7', name=u'1332410485000-eb66881f5b1c633dd1609ad6fc18a45c'), Group(Document(id='NSVcteD-2', name=u'1332410487000-a39e2076ca4477e8a324081732bd36c0'), Group(Document(id='NSVcteD-9', name=u'1332410485000-db1acc63d72a63f65623610242394877'), Group(Group(Document(id='NSVcteD-13', name=u'1332410152000-13ea7da3c74917b86bb70e59ff356397'), Document(id='NSVcteD-3', name=u'1332410487000-6287c3d86e6416cb421b6f176a367e23')), Group(Document(id='NSVcteD-10', name=u'1332410485000-508937f6a4cae9ed79dbd54f016ca61c'), Group(Document(id='NSVcteD-4', name=u'1332410487000-4b16fa5633a9df1341690d9a32a4f06d'), Group(Document(id='NSVcteD-1', name=u'1332410487000-b6696b10ad4415c87e41e5367fd4bcfa'), Group(Document(id='NSVcteD-8', name=u'1332410485000-e3f77be9cddcb9efc07914654454d817'), Group(Document(id='NSVcteD-14', name=u'1332410151000-cc13783d0980106d686d64082121f6ac'), Document(id='NSVcteD-15', name=u'1332410151000-a91330e828e41ed3b8503f3133f61fc7')))))))))))))) 

へわかりやすく、スクリプトで生成された実際のobjを持ってきてください。それは多段階リストであり、jsonスタイルの文字列に変換するなど、それを操作するために反復する方法はわかりません。

ご迷惑をおかけして申し訳ありません。

+0

これは理解できません。 – Marcin

+3

あなたの言語が特にpythonの場合、この一般的で読みにくいテキストの例ではなく、あなたのデータのいくつかのきれいで明確なpythonコードの例を含めてみませんか? – jdi

+0

あなたのコメントをありがとう、私はちょうど私の会社のフレームワークによって生成されたオブジェクトを含んでいます。返信 – mrblue

答えて

1

あなたはそのような意味ですか?これは完全に非効率であり、一定の深さの後に壊れることに注意してください。

>>> def recursive_iterate(iterable): 
...  iterated_object=[] 
...  for elem in iterable: 
...   if hasattr(elem,"__iter__"): 
...    iterated_object.append(recursive_iterate(elem)) 
...   else: 
...    iterated_object.append(elem) 
...  return iterated_object 
... 
>>> recursive_iterate([1,2,3,[4,5,6]]) 
[1, 2, 3, [4, 5, 6]] 
>>> recursive_iterate([1,2,3,xrange(10)]) 
[1, 2, 3, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]] 
>>> recursive_iterate([1,2,3,[4,5,6,[xrange(10)]]]) 
[1, 2, 3, [4, 5, 6, [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]] 
+0

一般的に、これは私が探しているものです。この機能のパフォーマンスに関するヒントをいくつか教えてください。再帰的に反復するための方法はありますか?ありがとうございました – mrblue

+0

再帰的反復は、コードのアルゴリズムの複雑さが不均衡に増加するため、通常悪いです。 – luke14free

+0

テール再帰を削除しようとする可能性がありますが、これは上記コードへのパッチに過ぎず、あまり助けになることはありません。おそらくあなたはc/C++/cythonでコードを書くべきです。別のオプションは、ここで説明するように、ネストしたオブジェクトをjsonに変換することです。http://stackoverflow.com/questions/2343535/easiest-way-to-serialize-a-simple-class-object-with-simplejson – luke14free

関連する問題