私はネストされたdictを持っています。リストには以下のようなリストとdictがあります。python3で特定の順序でネストされたdictを反復する
m = {'abc':
{'bcd': [
{'cde':'100','def':'200','efg':'300'},
{'cde':'3000','def':'500','efg':'4000'}
],
'ghi':
{'mnc': [
{'xyz':'8827382','mnx':'e838','wyew':'2232'}
]
}
}
}
私の要件は、MNXキーと一致することであり、値が'e838'
であれば、その特定の辞書内の他のキーの値を取得します。上記の例から私はxyz
キーの値を必要とするかもしれません。
このため、以下のような再帰的ループ関数を作成しました。これは動作しています。しかし、私の質問は、それを行うためのより良い/簡単な方法があるかどうかです。また、キーmnxですべての値を取得する必要がある場合は、同じコードで何ができるか。ありがとう。
注:XMLをdictにjxmlease libの助けを借りて変換しています。アウト
def iterate_dict(dict1,key1,val1):
for key, value in dict1.items():
if key == key1 and value == val1:
return dict1
if isinstance(value,list):
for item1 in value:
if isinstance(item1,dict):
for k,v in item1.items():
if k == key1 and v == val1:
return item1
if isinstance(value,dict):
for key,var in value.items():
if key == key1 and var == val1:
return value
else:
return iterate_dict(value,key1,val1)
あなたはどこ 'mnx'知ることが起こるのか鍵はなるだろうか?そうでない場合、XMLを辞書に変換するために使用しているXMLライブラリは、 'mnx'を見つけるのに役立ちます。 – loganasherjones
codereview.stackexchange.comにうってつけです – Prajwal
' mnx''はボトムレベルのディクテーションではありません。つまり、リストやディクテーションが含まれていますか?それともそれは起こらないでしょうか? –