访问列表元素,如果我有以下结构:蟒蛇 - 通过关键
[
{'id' : 100, 'name' : 'Bill'},
{'id' : 100, 'name' : 'Dave'}
]
我怎样才能在“名称”键获取元素。也就是说,我想获得{'id' : 100, 'name' : 'Dave'}
,但不必迭代并检查每个匹配项。
这是可能的,如果是的话如何?
访问列表元素,如果我有以下结构:蟒蛇 - 通过关键
[
{'id' : 100, 'name' : 'Bill'},
{'id' : 100, 'name' : 'Dave'}
]
我怎样才能在“名称”键获取元素。也就是说,我想获得{'id' : 100, 'name' : 'Dave'}
,但不必迭代并检查每个匹配项。
这是可能的,如果是的话如何?
你可以先改变你的字典清单到一个单一的字典, “名” 为重点:
data = {x['name']: x for x in original_data}
然后你使用:
data['Dave']
data['Bill']
PS: 对于Python早于2.7 ,使用这个:
data = dict((x['name'], x) for x in original_data)
这就是你在找什么
[x for x in a if x['name']=='Dave']
但是在这里,您正在迭代列表并检查每个项目。实际上,没有迭代列表就没有办法做这样的事情,因为它是list
而不是map
。
你必须迭代。这里没有名称和字典对象之间的映射。 – Blender
然后,您正在使用错误的数据结构,您必须迭代才能在列表中查找项目。 –
是否有可以映射到的替代数据结构?我正在从api接收这个结构,并将做很多这个操作。 –