有没有任何pythonic方法可以将集合转换为字典?
我得到了以下套装
s = {1,2,4,5,6}
并想要以下字典
c = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
有一个你会做的清单
a = [1,2,3,4,5,6]
b = []
while len(b) < len(a):
b.append(0)
c = dict(itertools.izip(a,b))
有没有任何pythonic方法可以将集合转换为字典?
我得到了以下套装
s = {1,2,4,5,6}
并想要以下字典
c = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
有一个你会做的清单
a = [1,2,3,4,5,6]
b = []
while len(b) < len(a):
b.append(0)
c = dict(itertools.izip(a,b))
c = dict.fromkeys(s, 0)
演示:
>>> s = {1,2,4,5,6}
>>> dict.fromkeys(s, 0)
{1: 0, 2: 0, 4: 0, 5: 0, 6: 0}
这也适用于列表;这是从序列创建字典的最有效方法。请注意,所有值都是对您传入的一个默认值的引用dict.fromkeys()
,因此当该默认值是可变对象时要小心。
除了@Martijn Pieters给出的方法之外,您还可以使用这样的字典理解:
s = {1,2,4,5,6}
d = {e:0 for e in s}
此方法比 dict.fromkeys() 慢,但它允许您将 dict 中的值设置为您需要的任何值,以防您不总是希望它为零。
您还可以使用它来创建列表,列表推导比您在问题中的循环更快、更 Pythonic。您可以在此处了解有关理解的更多信息:http: //docs.python.org/2/tutorial/datastructures.html#list-comprehensions
这也是另一种方法
s = {1,2,3,4,5}
dict([ (elem, 0) for elem in s ])