我有一个嵌套的字典:
{'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中的嵌套级别,以提取我选择的键/值
这可以帮助您获得所需的输出,
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的答案的帮助。