2016-03-03 274 views
1

我想將列表轉換爲字典列表。我有辦法做到這一點,但我懷疑有一個更好的辦法:將列表轉換爲字典列表

t = [[1,2,3], [4,5,6]] 
keys = ['a', 'b', 'c'] 
[{keys[0]:l[0], keys[1]:l[1], keys[2]:l[2]} for l in t] 

與輸出

[{'a': 1, 'c': 3, 'b': 2}, {'a': 4, 'c': 6, 'b': 5}] 

這可以通過一個循環來完成,但我敢打賭,有一個函數來做到這一點更容易。從this answer我猜想有一種方法可以通過map命令來實現,但我不太確定。

回答

8

您可以使用列表中理解和zip

[dict(zip(keys, l)) for l in t ] 

演示

>>> d = [dict(zip(keys, l)) for l in t ] 
>>> 
>>> d 
[{'a': 1, 'c': 3, 'b': 2}, {'a': 4, 'c': 6, 'b': 5}] 
>>> 
0

它也可以用字典解析解決,這種方式:

>>> [{k:v for k,v in zip(keys, l)} for l in t] 
[{'c': 3, 'b': 2, 'a': 1}, {'c': 6, 'b': 5, 'a': 4}]