将键添加到词典列表中

时间:2013-09-19 20:21:25

标签: python python-2.7 dictionary

我对Python很新,我怀疑这个问题的答案相当简单,但尽管进行了大量搜索,我似乎无法找到它。

我正在尝试将键/值添加到词典列表中。所以我有以下

John = ['smith', 'brown', 'wilson']
Details = [{'age': 23, 'hometown': 'chicago'},{'age': 26, 'hometown': 'New York'}, {'age': 44, 'hometown': 'Boston'}]

combined = zip(John, Details)

注意:我可以确定2个列表彼此相关。但是,这会创建一个元组列表,每个元组的第一个元素是一个字符串,第二个元素是字典。我想要的是创建一个具有以下格式的字典列表。

combined = [{'John': 'smith','age': 23, 'hometown': 'chicago'} , {'John': 'brown', 'age': 23, 'hometown': 'chicago'} ,  {'John': 'wilson', 'age': 44, 'hometown': 'Boston'}] 

我无法找到一种在干净的Pythonic代码中编写它的方法。我可以和上面的元组一起生活,但它并不理想。

2 个答案:

答案 0 :(得分:2)

几乎在那里,只需在创建新列表时添加新密钥,例如:

John = ['smith', 'brown', 'wilson']
Details = [{'age': 23, 'hometown': 'chicago'},{'age': 26, 'hometown': 'New York'}, {'age': 44, 'hometown': 'Boston'}]

combined = [dict(detail, John=surname) for detail, surname in zip(Details, John)]
# [{'hometown': 'chicago', 'age': 23, 'John': 'smith'}, {'hometown': 'New York', 'age': 26, 'John': 'brown'}, {'hometown': 'Boston', 'age': 44, 'John': 'wilson'}]

答案 1 :(得分:1)

map(lambda john,detail: dict(detail, John=john), John, Details)

>>>[{'hometown': 'chicago', 'age': 23, 'John': 'smith'}, 
    {'hometown': 'New York', 'age': 26, 'John': 'brown'},
    {'hometown':'Boston', 'age': 44, 'John': 'wilson'}]