Python:使用lambda获取列表中的项目,其中dict键是某个值

标签 python lambda

是否可以使用 lambda 获取?我知道我们可以使用 lambda 执行 sorted 函数,它非常有用。

是否有一种简短的方法来获取列表中的对象,其中键 'id' 处的对象等于 20

我们当然可以在整个过程中使用循环和循环。

x = [
    {'Car': 'Honda', 'id': 12},
    {'Car': 'Mazda', 'id': 45},
    {'Car': 'Toyota', 'id': 20}
    ]

desired_val = None
for item in list:
    if item['id'] == 20:
        desired_val = item
        break

是否可以使用 lambda 实现相同的功能?我对 lambda 不是很了解。

最佳答案

这里没有必要使用lambda。 Lambda 并不是什么神奇的东西,它只是编写简单函数的简写。与编写函数的普通方法相比,它不如强大,而不是更多。 (这并不是说它有时不是很方便,只是它没有超能力。)

无论如何,您可以使用带有默认参数的生成器表达式。请注意,我在这里返回对象本身,而不是 20,因为这对我来说更有意义。

>>> somelist = [{"id": 10, "x": 1}, {"id": 20, "y": 2}, {"id": 30, "z": 3}]
>>> desired_val = next((item for item in somelist if item['id'] == 20), None)
>>> print(desired_val)
{'y': 2, 'id': 20}
>>> desired_val = next((item for item in somelist if item['id'] == 21), None)
>>> print(desired_val)
None

关于Python:使用lambda获取列表中的项目,其中dict键是某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477709/

相关文章:

python - 如何查找图像中的子图像数量

c++ - 如何在 C++0x 中缓存 lambda?

c# - 检查列表中的所有值是否相等

c# - 按数据库中的原始数据分组

haskell - 有没有办法在纯函数式语言中调用两个函数(一个接一个)? (在非 io 模式下)

c# - 如何检查我的 lambda 表达式是否为空?

python - 如何在python中显示包的子包

python - 使用正则表达式从 python 中的文本中仅提取百分比信息

python - Pyparsing 在上下文中运行

python - 如何在 python pdb 中列出对象的所有属性?