如何创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是更好的,因为它使用生成器看到他的答案评论。