设置为dict Python

Sve*_*ger 39 python dictionary set

是否有任何pythonic方式将一组转换成一个字典?

我得到了以下一套

s = {1,2,4,5,6}
Run Code Online (Sandbox Code Playgroud)

并希望以下的词典

c = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
Run Code Online (Sandbox Code Playgroud)

你会做一个清单

a = [1,2,3,4,5,6]
b = []

while len(b) < len(a):
   b.append(0)

c = dict(itertools.izip(a,b))
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 75

用途dict.fromkeys():

c = dict.fromkeys(s, 0)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> s = {1,2,4,5,6}
>>> dict.fromkeys(s, 0)
{1: 0, 2: 0, 4: 0, 5: 0, 6: 0}
Run Code Online (Sandbox Code Playgroud)

这也适用于列表; 它是从序列创建字典的最有效方法.请注意,所有值都是对您传入的默认值的引用dict.fromkeys(),因此当该默认值是可变对象时要小心.


pap*_*rin 17

除了@Martijn Pieters给出的方法,你还可以使用这样的字典理解:

s = {1,2,4,5,6}
d = {e:0 for e in s}
Run Code Online (Sandbox Code Playgroud)

此方法比dict.fromkeys()慢,但它允许您将dict中的值设置为您需要的任何值,以防您不总是希望它为零.

您还可以使用它来创建列表,列表中的理解比您在问题中拥有的循环更快更pythonic.您可以在此处了解有关理解的更多信息:http: //docs.python.org/2/tutorial/datastructures.html#list-comprehensions

  • 如果默认值是可变的,并且每个键需要一个新对象,则使用此方法.`dict.fromkeys()`否则*far*更快. (2认同)
  • 请参阅[单个列表中构建字典的大多数Pythonic方法](http://stackoverflow.com/q/14258984)进行比较. (2认同)

asi*_*hal 6

这也是另一种方法

s = {1,2,3,4,5}
dict([ (elem, 0) for elem in s ])
Run Code Online (Sandbox Code Playgroud)