我有a = [1,2,3,4]
,我想要d = {1:0, 2:0, 3:0, 4:0}
d = dict(zip(q,[0 for x in range(0,len(q))]))
有效,但很难看。什么是更清洁的方式?
答案 0 :(得分:191)
dict((el,0) for el in a)
会运作良好。
Python 2.7及更高版本也支持dict理解。该语法为{el:0 for el in a}
。
答案 1 :(得分:140)
d = dict.fromkeys(a, 0)
a
是列表,0
是默认值。注意不要将默认值设置为某个可变对象(即列表或字典),因为它将是一个对象,用作字典中每个键的值(检查here以获取此案例的解决方案)。数字/字符串是安全的。
答案 2 :(得分:10)
在python版本> = 2.7和python 3中:
d = {el:0 for el in a}
答案 3 :(得分:8)
除了Tim的答案,这个答案非常适合你的具体例子,值得一提的是collections.defaultdict
,它允许你做这样的事情:
>>> d = defaultdict(int)
>>> d[0] += 1
>>> d
{0: 1}
>>> d[4] += 1
>>> d
{0: 1, 4: 1}
如图所示,为了映射[1, 2, 3, 4]
,它是一条脱离水的鱼。但根据您提出问题的原因,这可能最终成为一种更合适的技术。
答案 4 :(得分:3)
d = dict([(x,0) for x in a])
**编辑蒂姆的解决方案更好,因为它使用生成器查看评论到他的答案。