我有一个嵌套的字典,其中包含从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'}}
我需要在此嵌套字典中搜索键“状态”的特定值,并在匹配时返回该字典的所有值。但是,我在实现过程中不断收到一个关键错误,我不知道为什么。
# Based on this answer: https://stackoverflow.com/questions/9807634/find-all-occurrences-of-a-key-in-nested-dictionaries-and-lists
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
我已经走了这么远,但是我一生都无法弄清楚如何在嵌套的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中的所有词典在它们的架构上是否相同,因此我无法弄清楚为什么会出错。 有想法吗?
答案 0 :(得分:3)
您似乎正在使这一过程变得不必要的复杂。您似乎没有多层嵌套,因此不必递归。而且您只关心status
键是否匹配给定值,而不匹配其他任何键。
for d in some_dict.values():
if d['status'] == 'some status':
print(d)