在Python中查找字典列表的最简单方法是什么?
我现在的数据库返回的是一个字典列表:
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'