gpt4 book ai didi

python - 现有的 python 函数循环遍历列表并获取具有匹配元素的项目?

转载 作者:行者123 更新时间:2023-11-28 19:29:28 24 4
gpt4 key购买 nike

有一个字典列表并且您尝试检索具有匹配条件的字典是很常见的,请参见经典示例:

data = [{'id': 1, 'name': 'James'}, {'id': 2, 'name': 'Robert'}]

# to get James
for entry in data:
if entry['id'] == 1:
return entry

我知道有一个内置的 filter 函数,它可以做类似的事情:

james = filter(lambda element: element['id'] == 1, data)[0]

但是看起来不是很整齐,而且如果没有匹配到,它会出现IndexError

我更像是拥有一个适合 90% 时间的特定用途的函数:

def match_get(list, key, criteria):
for entry in list:
if list[key] == criteria:
return list

所以它看起来更干净:

james = match_get(data, 'id', 1)

在我继续创建这样的功能之前,我有一种强烈的感觉已经写了一些东西,但我无法从谷歌中找到它,希望有人能在这里告诉我。

更新:

我忘记声明的一件事(@Blckknght 提到使用字典而不是列表)是我无法控制我正在读取的数据,例如。 Elasticsearch 结果。

最佳答案

没有内置函数可以执行您所要求的操作。但是,如果您对数据使用不同的数据结构,则可以使用简单的代码高效地过滤或索引数据。

首先,如果您只想搜索 id 值,并且这些值是唯一的,您可以将字典列表替换为由 id 键入的单个字典:

data = {1: 'James', 2: 'Robert'}

使用这种结构,查找对应于给定 id 的名称是一个简单的字典索引操作:james = data[1]

如果您有多个值(不仅仅是name),您可以让字典的值成为更复杂的对象(甚至可能是您的原始字典)。

如果您需要搜索许多不同的键,或者如果值不是唯一的或不可散列的,这将不会很好地工作。在这种情况下,您可能需要使用可以为您进行过滤的库。

我相信 Pandas dataframes 可以满足您的需求,但我对该系统还不够熟悉,无法确切地告诉您如何做。您也可以使用数据库系统,如果您的数据集非常大,这可能是个好主意。

关于python - 现有的 python 函数循环遍历列表并获取具有匹配元素的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com