python - 在字典列表中搜索的最有效方法

标签 python list dictionary

我有以下字典列表。

people = [
{'name': "Tom", 'age': 10},
{'name': "Mark", 'age': 5},
{'name': "Pam", 'age': 7}
]

就在字典列表中搜索的性能而言,这将是最优化的方式。以下是一些不同的方法:

next((item for item in dicts if item["name"] == "Pam"), None)

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

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

def search_dictionaries(key, value, list_of_dictionaries):
    return [element for element in list_of_dictionaries if element[key] == value]

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

最佳答案

对函数进行快速计时表明使用过滤器似乎是所有方法中最快的

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

1000000 次循环,最好的 3 次:每次循环 263 ns

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

关于python - 在字典列表中搜索的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38865201/

相关文章:

dataframe - 在 DataFrames 中保存 JuMP 优化结果的紧凑方法

python - 使用 BeautifulSoup 从网页中提取某些内容时遇到问题

python - Pandas 将日期时间字符串列转换为日期时间而不应用偏移

python - 了解/usr/bin/env

list - Lisp 两个列表相乘并相加两个值

python - 字典条目被覆盖?

python - 在 QHeaderView 和 QListWidget 之间拖放列

python - 如何定义一组变量,以便程序响应列表中的任何项目被调用,python3

c# - 搜索 List<Items> 然后更改为 List<ItemType : Item>

python Pool 映射多个参数 - 列表和变量作为输入