Return 来自嵌套字典的键 Python

Return keys from nested dictionary Python

我有一个嵌套字典:

{'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层)内的键。这个 returns 一个唯一的列表(按嵌套顺序)我需要的第 1 级和第 3 级的键。这段代码有效,但我不知道如何或是否有更优雅的方式来编写它。我想进一步了解处理这种情况的方法,以明确处理 a 中的嵌套级别以提取我选择的 keys/values

这可以帮助您获得所需的输出,

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 的帮助。