Python 3.x 从映射列表中获取单个键值
根据这张地图Python 3.x 从映射列表中获取单个键值,python-3.x,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”
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']
的值,而不是列表中的值?您可以使用:
Id=next(如果api['name']=='foo',则r['items']中的api的api['Id']
另一个好处是,当您遇到匹配对象时,迭代将立即停止,而您的原始代码将处理所有原始列表并创建一个新的列表,只提取其第一个元素。由于您使用的是列表理解,因此
Id
的输出应该是一个列表,因此,如果只有一个元素,那么它就是这个Id=['1']
。如果您知道只有一个Id
具有名称“foo”
,那么您可以使用for循环。因此,如果您的条件为真,则Id将保存到Id
变量中,否则不会。这是否回答了您的问题?