2

我对 Python 还很陌生,我怀疑这个问题的答案相当简单,但尽管进行了多次搜索,我似乎还是找不到它。

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

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

combined = zip(John, Details)

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

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

我真的想不出用干净的 Pythonic 代码写这个的方法。我可以忍受上面的元组,但这并不理想。

4

2 回答 2

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'}]
于 2013-09-19T20:24:46.480 回答
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'}]
于 2013-09-19T20:56:46.473 回答