当特定键值在嵌套字典中匹配时如何打印多个键值

How to print multiple key values when a specifc key value matches in a nested dictionary

我有一个嵌套字典,其中包含从 json 中提取的键值对字典。例如一个名为 'some_dict':

的嵌套字典
{1: {'address': 'some address', 'status': 'some status', 'name': 'some name'},
 2: {'address': 'some other address', 'status': 'some other status', 'name': 'some other name'}}

我需要在这个嵌套字典中搜索键 'status' 的特定值,当它匹配时,return 该字典的所有值。但是,我在实施过程中不断收到一个关键错误,我不知道为什么。

# Based on this answer: 

def has_key_value(data, target):
    for key, value in data.items():
        if isinstance(value, dict):
            yield from has_key_value(value, target)
        elif key == target:
            return true

for x in range(1, len(some_dict)):
    if has_key_value(x, 'some status'):
        #print the dictionary

我已经说到这里了,但我一辈子都想不出如何 return 嵌套 some_dict 中的字典内容。我尝试了几种方法,最终得出了哪种方法:

for x in range(1, len(some_dict)):
    if has_key_value(x, 'some status'):
        print(some_dict[x])

除非在打印前 3 个词典后抛出 'KeyError: 4' 错误。我已经检查过 some_dict 中的所有词典在它们的架构中都是相同的,所以我无法弄清楚为什么会出现错误。 想法?

您似乎使这件事变得比必要的复杂得多。您似乎没有多层嵌套,因此您不必递归。你只关心 status 键匹配给定值,而不关心任何其他键。

for d in some_dict.values():
    if d['status'] == 'some status':
        print(d)