一尘不染

Python字典理解

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

不过,我得到一个SyntaxError上for

另外(我不需要这部分,只是想知道),你能否将字典的键设置为一堆不同的值,例如:

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)]

这也引发了SyntaxErrorfor


阅读 629

收藏
2020-02-11

共1个答案

一尘不染

Python 2.7+中有字典理解功能,但是它们不能完全按照你尝试的方式工作。就像列表理解一样,他们创建了一个新字典。你不能使用它们将键添加到现有字典中。另外,你必须指定键和值,但是当然可以根据需要指定虚拟值。

>>> 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)将新值合并到旧字典中。

2020-02-11