从地图列表中获取单个键值

时间:2019-12-06 20:41:02

标签: python-3.x

给出此地图

r = {
  'items': [
    {
      'id': '1',
      'name': 'foo'
    },
    {
      'id': '2',
      'name': 'bar'
    }
  ]
}

我正在尝试获取'name'=='foo'的'id'。我有这个:

Id = [api['id'] for api in r['items'] if 'foo' in api['name']]

然后Id == ['1']。我希望它=“ 1”。我可以这样做:

Id = [api['id'] for api in r['items'] if 'foo' in api['name']][0]

但这似乎是一种解决方法。有没有一种方法可以只传递api['id']的值而不传递列表中的值?

1 个答案:

答案 0 :(得分:0)

您可以使用generator

Id = next(api['id'] for api in r['items'] if api['name'] == 'foo')

另一个好处是,一旦遇到匹配的对象,迭代将立即停止,而原始代码将处理所有原始列表并创建一个新列表,仅提取其第一个元素。