我有 a = [1,2,3,4],我要 d = {1:0, 2:0, 3:0, 4:0}
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))]))
工作,但丑陋。什么是更干净的方式?
d = dict([(x,0) for x in a])
编辑提姆的解决方案是更好的,因为它使用生成器看到他的答案的评论。
dict((el,0) for el in a)运行良好。
dict((el,0) for el in a)
Python 2.7及以上版本也支持 dict 理解,其语法为 {el:0 for el in a}。
{el:0 for el in a}
Tim 的回答非常适合您的具体示例,除此之外,值得一提的是 collections.defaultdict,它允许您执行以下操作:
collections.defaultdict
>>> d = defaultdict(int) >>> d[0] += 1 >>> d {0: 1} >>> d[4] += 1 >>> d {0: 1, 4: 1}
在您的示例中,对于映射 [1, 2, 3, 4],它是一条离开水的鱼。但是取决于你问这个问题的原因,这可能最终成为一个更合适的技术。
[1, 2, 3, 4]
d = dict.fromkeys(a, 0)
a是列表,0是默认值。注意不要将默认值设置为某个可变对象(例如 list 或 dict) ,因为它将是字典中每个键的一个对象(查看 给你以获得此情况下的解决方案)。数字/字符串是安全的。
a
0
在 python 版本 > = 2.7和 python 3中:
d = {el:0 for el in a}