我有以下的dicts列表。
people = [
{'name': "Tom", 'age': 10},
{'name': "Mark", 'age': 5},
{'name': "Pam", 'age': 7}
]
在搜索词典列表中,这将是性能方面最优化的方式。以下是一些不同的方法:
next((item for item in dicts if item["name"] == "Pam"), None)
OR
filter(lambda person: person['name'] == 'Pam', people)
OR
def search(name):
for p in people:
if p['name'] == name:
return p
OR
def search_dictionaries(key, value, list_of_dictionaries):
return [element for element in list_of_dictionaries if element[key] == value]
也欢迎任何其他方法。感谢。
答案 0 :(得分:13)
对功能进行快速计时显示使用过滤器似乎是所有方法中最快的
%timeit filter(lambda person: person['name'] == 'Pam', people)
1000000次循环,最佳3:每循环263 ns
答案 1 :(得分:1)
如果您正在搜索单个项目,那么这是最好的"方法
def search(name):
for p in people:
if p['name'] == name:
return p
所有其他实现将迭代列表中的所有项目,而这一项将在项目找到后停止