2

私はPythonにかなり慣れていないので、これに対する答えはかなり単純だと思いますが、何度も検索しても見つからないようです。

キー/値を辞書のリストに追加しようとしています。だから私は次のものを持っています

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

combined = zip(John, Details)

注: 2 つのリストが相互に関連していることは確かです。ただし、各タプルの最初の要素が文字列で、2 番目の要素が辞書であるタプルのリストが作成されます。私が欲しいのは、次の形式の辞書のリストを作成することです。

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 に答える