str
のすべてのインスタンスをdictsおよびリストのネストされたデータ構造内で検索します。すべての端末項目がstr
になるわけではありません。ジェネレータを使用して、任意のネストされた特定のオブジェクトタイプの出現を任意のネストで見つけることができます。
データ例:
data = {'iso_seq_bams': [['5/X/tmp2oWhu5.tmp', 'y/H/tmp6Po0_X.tmp']],
'annotation': None,
'bams': {'BAM': {'ERR579132Aligned.sortedByCoord.out.bam': ['Y/o/tmpntzREn.tmp', 'z/c/tmp6DmQhS.tmp']},
'INTRONBAM': {}}}
と期待される結果は、このように['5/X/tmp2oWhu5.tmp', 'y/H/tmp6Po0_X.tmp', 'Y/o/tmpntzREn.tmp', 'z/c/tmp6DmQhS.tmp']
だろう私は、再帰的な方法でこれを実装しようと試みてきたが、動作するようには思えません。結果は現在、空のリストです。
def descend_object(obj):
if isinstance(obj, dict):
for item in obj.values():
descend_object(item)
elif isinstance(obj, list):
for item in obj:
descend_object(item)
elif isinstance(obj, str):
yield obj
あなたはから 'yield'する必要性をあなたの再帰呼び出し –
はhttp://stackoverflow.com/questions/10569636/how-to-get-all-keysvalues-in-nested-dict-of-list-of-dicts-and-dicts?rq=1に関連しています – Arman
降伏再帰呼び出しからのリード実際に結果を平坦化することなく、ネストされたジェネレータのグループに返す –