在 Python 中搜索字典列表
本教程将介绍可用于在 Python 中搜索字典列表的方法。
在 Python 中使用 next()
函数搜索字典列表
next()
函数可用于提供结果作为给定迭代器中的下一项。此方法还需要使用 for
循环来针对所有条件测试流程。
以下代码使用 next()
函数在 Python 中搜索字典列表。
lstdict = [
{ "name": "Klaus", "age": 32 },
{ "name": "Elijah", "age": 33 },
{ "name": "Kol", "age": 28 },
{ "name": "Stefan", "age": 8 }
]
print(next(x for x in lstdict if x["name"] == "Klaus"))
print(next(x for x in lstdict if x["name"] == "David"))
输出:
{'name': 'Klaus', 'age': 32}
Traceback (most recent call last):
File "<string>", line 8, in <module>
StopIteration
当我们搜索字典列表中已经存在的名称时,该方法成功实现。尽管如此,当搜索字典列表中不存在的名称时,它会给出 StopIteration
错误。
但是,在上面的代码中可以很容易地处理这个问题。你只需使用稍微不同的 API 来调整并提供默认值。
lstdict = [
{ "name": "Klaus", "age": 32 },
{ "name": "Elijah", "age": 33 },
{ "name": "Kol", "age": 28 },
{ "name": "Stefan", "age": 8 }
]
print(next((x for x in lstdict if x["name"] == "David"), None))
输出:
None
除了查找项目本身,我们还可以在字典列表中查找项目的索引。为了实现这一点,我们可以使用 enumerate()
函数。
以下代码使用 next()
函数和 enumerate()
函数来搜索和查找项目的索引。
lstdict = [
{ "name": "Klaus", "age": 32 },
{ "name": "Elijah", "age": 33 },
{ "name": "Kol", "age": 28 },
{ "name": "Stefan", "age": 8 }
]
print(next((i for i, x in enumerate(lstdict) if x["name"] == "Kol"), None))
输出:
2
在 Python 中使用 filter()
函数搜索字典列表
filter(function, sequence)
function 用于将 sequence
与 Python 中的 function
进行比较。它根据函数检查序列中的每个元素是否为真。通过使用 filter()
函数和 lambda
函数,我们可以轻松地在字典列表中搜索一个项目。在 Python3 中,filter()
函数返回 filter
类的对象。我们可以使用 list()
函数将该对象转换为列表。
下面的代码示例向我们展示了如何使用 filter()
和 lambda
函数在字典列表中搜索特定元素。
listOfDicts = [
{ "name": "Tommy", "age": 20 },
{ "name": "Markus", "age": 25 },
{ "name": "Pamela", "age": 27 },
{ "name": "Richard", "age": 22 }
]
list(filter(lambda item: item['name'] == 'Richard', listOfDicts))
输出:
[{'age': 22, 'name': 'Richard'}]
我们使用 filter()
函数和 lambda
函数在字典列表中搜索 name
键等于 Richard
的元素。首先,我们初始化了字典列表 listOfDicts
,并使用 filter()
函数搜索与 lambda
函数 lambda item: item['name'] == 'Richard'
匹配的值它。最后,我们使用 list()
函数将结果转换为列表。
在 Python 中使用列表推导搜索字典列表
列表推导式是一种相对较短且非常优雅的方式来创建基于现有列表的给定值形成的列表。
我们可以使用列表推导返回一个列表,该列表生成 Python 中字典列表的搜索结果。
以下代码使用列表推导在 Python 中搜索字典列表。
lstdict = [
{ "name": "Klaus", "age": 32 },
{ "name": "Elijah", "age": 33 },
{ "name": "Kol", "age": 28 },
{ "name": "Stefan", "age": 8 }
]
print([x for x in lstdict if x['name'] == 'Klaus'][0])
输出:
{'name': 'Klaus', 'age': 32}
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn相关文章 - Python Dictionary
- 如何检查 Python 字典中是否存在某键
- 在 Python 中将字典转换为列表
- Python 如何得到文件夹下的所有文件
- 在 Python 字典中寻找最大值
- 如何按值对字典排序
- 如何在 Python 2 和 3 中合并两个字典