我想在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}
实现这一目标的最佳方法是什么?
答案 0 :(得分: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}]
如果你想要一个dicts的词典,那么使用dict理解:
>>> 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}}
答案 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)]
答案 2 :(得分:0)
获取词典列表:
dictionary = [dict(zip(keys,value)) for i in xrange(4)]
如果你真的想要像你说的字典词典那样:
dictionary = dict((i,dict(zip(keys,value))) for i in xrange(4))
我想你可以使用pop或其他dict调用,而这些调用你不能从列表中
顺便说一句:如果这真的是一个数据/数字运算应用程序,我建议将numpy和/或pandas作为很好的模块。
修改 re:OP评论, 如果你想要你所谈论的数据类型的指标:
# dict keys must be tuples and not lists
[(i,j) for i in xrange(4) for j in range(3)]
# same can come from itertools.product
from itertools import product
list(product(xrange4, xrange 3))