我有一個這樣的嵌套字典:
{'needed1': {'notneeded': {'needed2': 'some_value'},
'notneeded2': {'needed2': 'some_value'},
'notneeded3': {'needed3: 'some_value', 'needed4': 'some_value'},
'notneeded4': {'needed3': 'some_value', 'needed4': 'some_value'}}}
我在其中寫了一個這樣的函式:
def get_field_names(category):
field_names = []
for info_cat, cat_type in category.items():
# first key -> needed
field_names.append(info_cat)
for category_type, conditions in cat_type.items():
# second key -> not needed
for field in conditions.keys():
# third key -> needed
if field not in field_names:
field_names.append(field)
return field_names
其中需要字典頂部的鍵和嵌套字典(第 3 級)內的鍵。這將回傳一個唯一串列(按嵌套順序)我需要的第 1 層和第 3 層的鍵。此代碼有效,但我不知道如何或是否有更優雅的方式來撰寫它。我想進一步了解處理這種情況的方法,以顯式處理 a 中的嵌套級別以提取我選擇的鍵/值
uj5u.com熱心網友回復:
這可以幫助您獲得所需的輸出,
def get_all_keys(mydict):
for key, value in mydict.items():
yield key
if type(value) == dict:
yield from get_all_keys(mydict[key])
keys = set(map(lambda key:key if ("not" not in key) else None, get_all_keys(data))) - {None}
我為此得到了@DmitryTorba 的答案的幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473188.html
