如何使用列表中的键创建字典,并将值默认为(比方说)为零?

时间:2010-10-06 04:24:56

标签: python dictionary

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

有效,但很难看。什么是更清洁的方式?

5 个答案:

答案 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])

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