假设我有一个列表,我怎么能创建一个字典,列表中的对象是键,而不好选择一个值作为默认值.例如 :
inp : [a,b,c] out : {a:1,b:1,c:1}
我能想到的就是:
dict={} list=['a','b','c'] for obj in list: dict[obj]=1
有没有更干净的方式?谢谢.
你可以使用fromkeys
int作为不可变的:
d = dict.fromkeys(l, 1)
演示:
In [6]: l = ['a','b','c'] In [7]: dict.fromkeys(l, 1) Out[7]: {'a': 1, 'b': 1, 'c': 1}
通过使用可变对象作为值即列表,可以看出为什么不变性会产生影响:
In [10]: d = dict.fromkeys(l, []) In [11]: d["a"].append("foo") In [12]: d Out[12]: {'a': ['foo'], 'b': ['foo'], 'c': ['foo']}
将共享可变值.
您还可以使用dict理解,这对于可变值或不可变值是安全的:
d = {k: [] for k in l} d = {k: 1 for k in l}