【发布时间】:2021-03-18 16:36:20
【问题描述】:
我一直在尝试研究最简单的事情,如果有人解释为什么会这样,我将不胜感激。代码如下:sn-p:
#使用枚举从集合中创建字典:
myset = {'A','A','B','C'}
mydict = dict(enumerate(myset))
print(mydict)
输出:
{0: 'B', 1: 'C', 2: 'A'}
我的预期输出:
{0: 'A', 1: 'B', 2: 'C'}
然而,它适用于列表!
#使用枚举从列表中创建字典:
li = ["apple","banana","mango"]
mydict = dict(enumerate(myset))
print(mydict)
输出:
{0: 'apple', 1: 'banana', 2: 'mango'}
感谢解释!
【问题讨论】:
-
集合中元素的顺序是未指定的,CPython 故意打乱它以防止您依赖于一致的顺序。
-
@Barmar:你在想围棋地图之类的吗?在 CPython 集中没有刻意改组。
-
@user2357112supportsMonica 我想我记得一个问题,有人反复运行这样的代码,每次都得到不同的顺序。
-
@Barmar:您可能正在考虑哈希随机化的影响——一些内置类型的哈希取决于在解释器设置时初始化的随机状态。这是为了让哈希冲突攻击更加困难。
标签: python dictionary set enumerate