搜索词典列表的最有效方法

时间:2016-08-10 05:50:07

标签: python list dictionary

我有以下的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]

也欢迎任何其他方法。感谢。

2 个答案:

答案 0 :(得分:13)

对功能进行快速计时显示使用过滤器似乎是所有方法中最快的

%timeit filter(lambda person: person['name'] == 'Pam', people)

1000000次循环,最佳3:每循环263 ns

  • 使用next会产生731ns的时间
  • 使用搜索方法产生的时间为361ns
  • 最后,seach_dictionaries使用811ns

答案 1 :(得分:1)

如果您正在搜索单个项目,那么这是最好的"方法

def search(name):
    for p in people:
        if p['name'] == name:
            return p

所有其他实现将迭代列表中的所有项目,而这一项将在项目找到后停止