如何从列表中创建字典

时间:2015-12-24 22:06:17

标签: python

假设我有一个列表,我该如何创建一个字典,其中列表中的对象是键,而不好选择一个值作为默认值。例如:

inp : [a,b,c]
out : {a:1,b:1,c:1}

我能想到的就是:

dict={}
list=['a','b','c']
for obj in list:
    dict[obj]=1

有更干净的方式吗? 谢谢。

2 个答案:

答案 0 :(得分:7)

您可以使用fromkeys,因为不可变

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}

为什么 immutability 可以通过使用 mutable 对象作为值,即列表来看待

In [10]: d = dict.fromkeys(l, [])

In [11]: d["a"].append("foo")

In [12]: d
Out[12]: {'a': ['foo'], 'b': ['foo'], 'c': ['foo']}

将共享可变值。

你也可以使用 dict comprehension ,这对 mutable 或不可变值是安全的:

d = {k: [] for k in l}
d = {k: 1 for k in l}

答案 1 :(得分:1)

你也可以这样做:

>>> lst = ['a','b','c']
>>> dict(zip(lst,[1]*len(lst)))
{'a': 1, 'c': 1, 'b': 1}