次のリストがあるとします。
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']
次の辞書を作成する最も簡単な方法は何ですか?
a_dict = {'name': 'Monty', 'age': 42, 'food': 'spam'}
次のリストがあるとします。
keys = ['name', 'age', 'food']
values = ['Monty', 42, 'spam']
次の辞書を作成する最も簡単な方法は何ですか?
a_dict = {'name': 'Monty', 'age': 42, 'food': 'spam'}
これを試して:
>>> 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
です。
>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> dict(zip(keys, values))
{'food': 'spam', 'age': 42, 'name': 'Monty'}
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'}
ディクショナリを作成する前にキーまたは値を変換する必要がある場合は、ジェネレータ式を使用できます。例:
>>> adict = dict((str(k), v) for k, v in zip(['a', 1, 'b'], [2, 'c', 3]))
Code Like a Pythonista : Idiomatic Python をご覧ください。
簡単なコードが必要で、に慣れていない人向けzip
:
List1 = ['This', 'is', 'a', 'list']
List2 = ['Put', 'this', 'into', 'dictionary']
これは、1 行のコードで実行できます。
d = {List1[n]: List2[n] for n in range(len(List1))}