从枚举列表构建字典时的意外行为



这很奇怪,这是我第一次从枚举列表创建字典时看到这种行为。假设你有一个这样的列表:

>>> a = [1, 8, 6, 2, 5, 4, 8, 3, 7]
>>> for x, y in enumerate(a):
print(x, y)
Out: 
0 1
1 8
2 6
3 2
4 5
5 4
6 8
7 3
8 7

这很有意义。

>>> foo = {x: y for x, y in enumerate(a)}
>>> foo
Out: {0: 1, 1: 8, 2: 6, 3: 2, 4: 5, 5: 4, 6: 8, 7: 3, 8: 7}

但是如果我把索引和值调换一下就会发生各种奇怪的事情:

>>> foo = {y: x for x, y in enumerate(a)}
>>> foo
Out:
{1: 0, 8: 6, 6: 2, 2: 3, 5: 4, 4: 5, 3: 7, 7: 8}

索引1为什么消失?为什么值8的索引是6而不是1?

我不明白为什么会发生这种情况,以及如何在这种情况下正确地编写字典理解?

因为字典不能包含重复的键,它们保留具有相同键的最后一个元素。

相关内容

  • 没有找到相关文章

最新更新