如何创build一个列表中的键和字典值默认(说)零的字典?

我有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))])) 

工作,但丑陋。 什么是更清洁的方式?

dict((el,0) for el in a)将会很好的工作。

Python 2.7及以上版本也支持字典理解。 这个语法是{el:0 for el in a}

 d = dict.fromkeys(a, 0) 

a是列表, 0是默认值。 请注意,不要将默认值设置为某个可变对象(即list或dict),因为它将是一个对象,用作字典中每个键的值(请查看此处的解决scheme)。 数字/string是安全的。

除了Tim的答案,这个答案非常适合你的具体例子,值得一提的是collections.defaultdict ,它可以让你做这样的事情:

 >>> d = defaultdict(int) >>> d[0] += 1 >>> d {0: 1} >>> d[4] += 1 >>> d {0: 1, 4: 1} 

对于如你的例子中的[1, 2, 3, 4]映射,这是一个鱼出水。 但是,根据你问这个问题的原因,这可能最终是一个更合适的技术。

在python版本> = 2.7和python 3:

 d = {el:0 for el in a} 
 d = dict([(x,0) for x in a]) 

**编辑蒂姆的解决scheme是更好的,因为它使用生成器看到他的答案评论。