0

Python で辞書の辞書を作成したかった:

キーを含むリストが既にあるとします。

keys = ['a', 'b', 'c', 'd', 'e']
value = [1, 2, 3, 4, 5]

数値 (20 個) を含むデータ フィールドがあるとします。

対応する値に与えられた4つの異なる辞書を格納する辞書を定義したい

for i in range(0, 3)
   for j in range(0, 4)
     dictionary[i] = { 'keys[j]' : value[j] }

したがって、基本的には次のようになります。

dictionary[0] = {'a' : 1, 'b' : 2, 'c' : 3, 'd': 4, 'e':5}
dictionary[1] = {'a' : 1, 'b' : 2, 'c' : 3, 'd': 4, 'e':5}
dictionary[2] = {'a' : 1, 'b' : 2, 'c' : 3, 'd': 4, 'e':5}
dictionary[3] = {'a' : 1, 'b' : 2, 'c' : 3, 'd': 4, 'e':5}

これを達成するための最良の方法は何ですか?

4

3 に答える 3

3

リスト内包表記を使用するとdict(zip(keys,value))、辞書が返されます。

>>> keys = ['a', 'b', 'c', 'd', 'e']
>>> value = [1, 2, 3, 4, 5]
>>> dictionary = [dict(zip(keys,value)) for _ in xrange(4)]
>>> from pprint import pprint
>>> pprint(dictionary)
[{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5},
 {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5},
 {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5},
 {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}]

辞書の辞書が必要な場合は、辞書内包表記を使用します。

>>> keys = ['a', 'b', 'c', 'd', 'e']
>>> value = [1, 2, 3, 4, 5]
>>> dictionary = {i: dict(zip(keys,value)) for i in xrange(4)}
>>> pprint(dictionary)
{0: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5},
 1: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5},
 2: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5},
 3: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}}
于 2013-05-19T17:21:03.400 に答える
1

1回だけ圧縮する代替...:

from itertools import repeat
map(dict, repeat(zip(keys,values), 4))

または、おそらく、一度使用dict.copyして構築するだけです:dict

[d.copy() for d in repeat(dict(zip(keys, values)), 4)]
于 2013-05-19T17:41:59.000 に答える