訪問列表元素,如果我有以下結構:蟒蛇 - 通過關鍵
[
{'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接收這個結構,並將做很多這個操作。 –