私はこのようなpython dictを持っています
{'data': [{'data': [{'data': 'gen1', 'name': 'objectID'},
{'data': 'familyX', 'name': 'family'}],
'name': 'An-instance-of-A'},
{'data': [{'data': 'gen2', 'name': 'objectID'},
{'data': 'familyY', 'name': 'family'},
{'data': [{'data': [{'data': '21',
'name': 'objectID'},
{'data': 'name-for-21',
'name': 'name'},
{'data': 'no-name', 'name': None}],
'name': 'An-instance-of-X:'},
{'data': [{'data': '22',
'name': 'objectID'}],
'name': 'An-instance-of-X:'}],
'name': 'List-of-2-X-elements:'}],
'name': 'An-instance-of-A'}],
'name': 'main'}
構造は繰り返され、そのルールは次のようになります。
- 辞書には「名前」と「データ」が含まれています
- 「データ」には辞書のリストを含めることができます
- 「データ」がリストでない場合、それは私が必要とする値です。
- 「名前」はただの名前です
問題は、各値について、各親のすべての情報を知る必要があることです。
最後に、次のようなアイテムのリストを出力する必要があります。
objectID=gen2 family=familyY An-instance-of-X_objectID=21 An-instance-of-X_name=name-for-21
編集:これは、出力として必要な数行のうちの 1 つにすぎません。「データ」として辞書を持たない各項目に対して、このような 1 行が必要です。
したがって、辞書ではない各データについて、上にトラバースし、情報を見つけて出力します..
itertools や collections のようなモジュールのすべての関数を知っているわけではありません。しかし、そこに私が使用できるものはありますか?これは何と呼ばれていますか (私が自分で研究をしようとしているとき)?
多くの「フラット化辞書」メソッドを見つけることができますが、これは好きではありません。