Python 在嵌套字典中搜索值的有效方法?

Python 在嵌套字典中搜索值的有效方法?,python,dictionary,search,Python,Dictionary,Search,如果我有一个任意长度的嵌套字典列表,如下所示: list_of_dic = [{'A': 1, 'B': 2, 'C': {'name': 'some_name1', ...}}, {'A': 4, 'B': 1, 'C': {'name': 'some_name2', ...}}, {'A': 3, 'B': 4, 'C': {'name': 'some_name3', ...}}, ...] 我想找到

如果我有一个任意长度的嵌套字典列表,如下所示:

list_of_dic = [{'A': 1, 'B': 2, 'C': {'name': 'some_name1', ...}},
               {'A': 4, 'B': 1, 'C': {'name': 'some_name2', ...}},
               {'A': 3, 'B': 4, 'C': {'name': 'some_name3', ...}},
               ...]
我想找到嵌套字典(即与键
C
关联的字典),其中包含我想要的
名称(每个
名称
都是唯一的;没有重复项),最有效的方法是什么

我能想到两种方法;第一种方法是循环遍历所有内容,这听起来很糟糕,第二种方法是:

[x['C'] for x in list_of_dic if x['C']['name'] == 'some_name5'][0]

有没有更好、更有效的方法来做到这一点,因为dic的列表可能会很长。谢谢。

使用您的方法,即使在找到匹配项后,您也会遍历整个dict列表

您可以使用
next
仅获取第一个匹配项

next((x['C'] for x in list_of_dic if x['C']['name'] == 'some_name5'), None)

我觉得不错。这是列表的一个单一过程,但我不确定我是否理解
[0]
索引。如果您只想要第一个结果,那么使用带有
中断的
for
循环可能会更好。