Python词典理解

问题:

是否可以在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

回答:

dictionary comprehensions in Python 2.7+,但它们的工作方式并不如你所想。像列表理解一样,他们创建一个new字典;您不能使用它们将键添加到现有的字典。此外,您必须指定键和值,虽然您可以指定一个虚拟值,但如果您愿意的话。

>>> d = {n: n**2 for n in range(5)}
>>> print d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

如果要将它们全部设置为True:

>>> d = {n: True for n in range(5)}
>>> print d
{0: True, 1: True, 2: True, 3: True, 4: True}

您似乎要求的是一种在现有的字典上一次设置多个键的方式。没有直接的捷径。您可以像已经显示的一样循环,也可以使用字典理解创建一个新的值,然后使用oldDict.update(newDict)将新值合并到旧的字典中。

 
 Code问答: codewenda.com
Stackoverflow:Python Dictionary Comprehension

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 2 = 2