【问题标题】:Get dictionary with key/value in a list of dictionaries在字典列表中获取带有键/值的字典
【发布时间】:2019-03-27 11:13:18
【问题描述】:

我有一个字典列表,如下所示:

[
    {
        "name": "hello",
        "value": "world"
    },
    {
        "name": "foo",
        "value": "bar"
    }
]

从字典列表中获取name = "foo" 的字典的pythonic 方式是什么?

【问题讨论】:

  • 总会有一个匹配项吗?如果有零个或多个匹配项,你想要什么?

标签: python-3.x


【解决方案1】:

试试这个简单的例子。

data = [
    {
        "name": "hello",
        "value": "world"
    },
    {
        "name": "foo",
        "value": "bar"
    }
  ]


for item in data:
    if item['name'] == 'foo':
        print(item)

输出:

{'name': 'foo', 'value': 'bar'}

【讨论】:

    【解决方案2】:

    假设您的字典列表存储为变量l,您可以将next() 与这样的生成器表达式一起使用,它返回name 键为foo 的第一个字典:

    next(d for d in l if d['name'] == 'foo')
    

    如果l 中没有dict 且name 键等于foo,这将引发StopIteration

    【讨论】:

    • 我要补充一点,next 还接受可选的第二个参数,这是要返回的默认值。因此,如果您发送next(iterator, None),您可以收到您正在寻找的物品,如果没有找到,您可以收到None - 以防万一您不想发现异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2012-05-21
    • 2013-08-29
    • 2021-12-09
    • 1970-01-01
    • 2022-06-21
    相关资源
    最近更新 更多