在Python中查找字典列表的最简单方法是什么?

1 投票
5 回答
705 浏览
提问于 2025-04-16 05:25

我现在的数据库返回的是一个字典列表:

id_list = ({'id': '0c871320cf5111df87da000c29196d3d'}, 
           {'id': '2eeeb9f4cf5111df87da000c29196d3d'}, 
           {'id': '3b982384cf5111df87da000c29196d3d'}, 
           {'id': '3f6f3fcecf5111df87da000c29196d3d'}, 
           {'id': '44762370cf5111df87da000c29196d3d'}, 
           {'id': '4ba0d294cf5111df87da000c29196d3d'})

我该怎么简单地检查一个给定的ID是否在这个列表里呢?

谢谢。

5 个回答

7

我怎么能简单地检查一个给定的ID是否在这个列表里呢?

可以创建一个集合

keys = set( d['id'] for d in id_list )
if some_value in keys

别问这是不是“高效”或者“最好”。这涉及到标准的权衡。

建立集合需要时间。但之后查找就会非常快。

  • 如果你查找的次数很多,建立集合的成本就会在每次查找中分摊。

  • 如果你查找的次数很少,建立集合的成本可能会比用 {'id':some_value} in id_list 这种方式更高。

7

这里有一个一行代码:

if some_id in [d.get('id') for d in id_list]:
    pass

不过,这种方法效率不是很高。

补充说明 -- 可能有更好的方法:

if some_id in (d.get('id') for d in id_list):
    pass

这样的话,列表就不会提前生成完整的长度。

5

如果你创建一个关于你搜索ID的字典,

search_dic = {'id': '0c871320cf5111df87da000c29196d3d'}

id_list = ({'id': '0c871320cf5111df87da000c29196d3d'}, 
           {'id': '2eeeb9f4cf5111df87da000c29196d3d'}, 
           {'id': '3b982384cf5111df87da000c29196d3d'}, 
           {'id': '3f6f3fcecf5111df87da000c29196d3d'}, 
           {'id': '44762370cf5111df87da000c29196d3d'}, 
           {'id': '4ba0d294cf5111df87da000c29196d3d'})


if search_dic in id_list:
    print 'yes'

撰写回答