的名單得到的值列表,我有這樣的字典清單:蟒蛇從字典
[{'value': 'apple', 'blah': 2}, {'value': 'banana', 'blah': 3} , {'value': 'cars', 'blah':4}]
我想['apple', 'banana', 'cars']
請告訴我要做到這一點的最好方法是什麼?
的名單得到的值列表,我有這樣的字典清單:蟒蛇從字典
[{'value': 'apple', 'blah': 2}, {'value': 'banana', 'blah': 3} , {'value': 'cars', 'blah':4}]
我想['apple', 'banana', 'cars']
請告訴我要做到這一點的最好方法是什麼?
假設每個dict有一個value
鍵,你可以寫(假設您的列表名爲l
)
[d['value'] for d in l]
如果value
可能會丟失,您可以使用
[d['value'] for d in l if 'value' in d]
要處理鍵的缺失值,還可以使用d.get(「key_to_lookup」,「alternate_value」)。然後,它將如下所示:[d.get('value','alt')for d in l]。如果值不是鍵,它只會返回'alt'。 – abhinav
這裏的另一種使用map()和lambda函數的方法:
>>> map(lambda d: d['value'], l)
其中l是列表。 我看到這種方式「最性感」,但我會用列表理解。
更新: 在情況下「價值」可能缺少的一個關鍵應用:
>>> map(lambda d: d.get('value', 'default value'), l)
更新:我也沒有lambda表達式的忠實粉絲,我喜歡的東西的名字......這是我將如何考慮到這一點做到這一點:
>>> import operator
>>> map(operator.itemgetter('value'), l)
我會走得更遠,並創建一個明確的說,我要達到什麼樣的一個唯一的功能:
>>> import operator, functools
>>> get_values = functools.partial(map, operator.itemgetter('value'))
>>> get_values(l)
... [<list of values>]
1)你有什麼嘗試?請包含您的代碼。 2)在這種情況下,「最好」是一個毫無意義的詞 - 最好可能意味着最快,最少的內存或最多使用Oracle許可的產品。我們不知道你認爲你的意思是「最好的」。而且我們無法對您未發佈的代碼發表評論。 –
也許他只是想問一下這是什麼「pythonic」方法 –
Mr S.Lott,有太多關於SO的問題,沒有代碼,但有答案,很好的答案,如果你不婉不會因爲x或y發佈答案,只是忽略此帖,這就是全部。 :v很多年前。 –