是否可以用Python创建字典理解(用于键)?
如果没有列表理解,您可以使用以下内容:
l = []
for n in range(1, 11):
l.append(n)
我们可以将其缩短为列表理解:l = [n for n in range(1, 11)]
。
但是,假设我想将字典的键设置为相同的值。 我能做到:
d = {}
for n in range(1, 11):
d[n] = True # same value for each
我试过这个:
d = {}
d[i for i in range(1, 11)] = True
但是,我在for
上得到一个SyntaxError
。
另外(我不需要这个部分,只是想知道),你能把字典的键设置成一堆不同的值吗,比如:
d = {}
for n in range(1, 11):
d[n] = n
这有可能通过字典理解吗?
d = {}
d[i for i in range(1, 11)] = [x for x in range(1, 11)]
这也会在for
上引发SyntaxError
。
您可以使用^{} 类方法。。。
这是创建字典的最快方法,其中所有键都映射到同一个值。
但是do not use this with mutable objects:
如果您实际上不需要来初始化所有键,那么
defaultdict
可能也很有用:要回答第二部分,听写理解正是你所需要的:
您可能不应该这样做,但也可以创建
dict
的子类,如果重写__missing__
,它的工作方式类似于defaultdict
:有dictionary comprehensions in Python 2.7+,但它们的工作方式与您尝试的不同。像列表理解一样,它们创建一个新的字典;您不能使用它们向现有字典添加键。此外,还必须指定键和值,当然,如果愿意,也可以指定一个伪值。
如果要将它们全部设置为真:
你想要的似乎是一种在现有字典上同时设置多个键的方法。没有直接的捷径。您可以像已经显示的那样循环,也可以使用字典理解创建一个带有新值的新dict,然后执行
oldDict.update(newDict)
将新值合并到旧dict中相关问题 更多 >
编程相关推荐