Python字典理解

发布于 2021-02-02 23:22:15

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

关注者
0
被浏览
125
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看