【问题标题】:Efficient Way of Searching for a Value in a Nested Dictionary?在嵌套字典中搜索值的有效方法?
【发布时间】:2018-08-29 21:02:54
【问题描述】:

如果我有一个任意长度的嵌套字典列表,看起来像这样:

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', ...}},
               ...]

我想找到包含我想要的name 的嵌套字典(即与键C 关联的字典)(每个name 都是唯一的;没有重复项),什么是最有效的如何做到这一点?

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

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

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

【问题讨论】:

  • 我觉得不错。这是列表的单遍,但我不确定我是否理解[0] 索引。如果您只想要第一个结果,则使用 for 循环和 break 可能会更好。

标签: python dictionary search


【解决方案1】:

使用您的方法,即使找到匹配项,您最终也会遍历整个 list_of_dict。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多