1554

次のリストがあるとします。

keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']

次の辞書を作成する最も簡単な方法は何ですか?

a_dict = {'name': 'Monty', 'age': 42, 'food': 'spam'}
4

18 に答える 18

2628

このような:

keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
print(dictionary) # {'a': 1, 'b': 2, 'c': 3}

出来上がり:-) ペアワイズdictコンストラクターとzip関数は非常に便利です。

于 2008-10-16T19:09:05.400 に答える
134

これを試して:

>>> import itertools
>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> adict = dict(itertools.izip(keys,values))
>>> adict
{'food': 'spam', 'age': 42, 'name': 'Monty'}

Python 2 では、 に比べてメモリ消費も経済的zipです。

于 2008-10-16T19:16:02.377 に答える
38
>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> dict(zip(keys, values))
{'food': 'spam', 'age': 42, 'name': 'Monty'}
于 2008-10-16T19:09:18.393 に答える
31

Python ≥ 2.7 で辞書内包表記を使用することもできます。

>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> {k: v for k, v in zip(keys, values)}
{'food': 'spam', 'age': 42, 'name': 'Monty'}
于 2012-06-10T20:03:34.183 に答える
15

ディクショナリを作成する前にキーまたは値を変換する必要がある場合は、ジェネレータ式を使用できます。例:

>>> adict = dict((str(k), v) for k, v in zip(['a', 1, 'b'], [2, 'c', 3])) 

Code Like a Pythonista : Idiomatic Python をご覧ください

于 2008-10-16T20:45:04.240 に答える
10

簡単なコードが必要で、に慣れていない人向けzip:

List1 = ['This', 'is', 'a', 'list']
List2 = ['Put', 'this', 'into', 'dictionary']

これは、1 行のコードで実行できます。

d = {List1[n]: List2[n] for n in range(len(List1))}
于 2013-03-29T19:13:45.220 に答える