字典.keys()获得的键列表元素顺序是随机的吗?

字典.keys()获得的键列表元素顺序是随机的吗?,第1张

字典.keys()获得的键列表元素顺序是随机的吗?,第2张

python2,dict 对象的 keys()方法获得的键列表中的元素顺序是固定的还是随机的? 用少量数据试了下,看上去好像是固定且有规律的(升序?) dict.values()是按 keys()结果的顺序输出的?

----------------------- 以下是精选回复-----------------------

答:3.5 后是依次加入的顺序
d['b']=1
d['a']=2
顺序就是 b a
答:我怎么记得是 3.7,PyPy 不记得,CPython 是 3.6 实现的,然后是到 3.7 才推广到全语言的
答:Python 不知道, 但是在 Java 中, 为了避免客户依赖这种特性, 哪怕是内部有序的, 返回给你的时候都会打乱.

既然使用 hash 表, 就不要再考虑顺序了
答:随机的,需要顺序,用 ordered dict
答:我记得 python 中好像是随机的
答:Python 3.7+ https://docs.python.org/3.7/whatsnew/3.7.html

In Python 3.7.0 the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec. Therefore, you can depend on it.
答:go 之前版本是键列表是有序的,后来为了避免大家依赖这个,新版本改成无序的了
答:不是随机的,感觉是排过序的:

>>> {1:2,3:4}.keys()
>>> [1, 3]

--------------------

>>> {3:2,1:4}.keys()
>>> [1, 3]
答:看版本, 3.6 之前是"无序"的, 也就是 hash 顺序

3.6 之后则是按 key 插入顺序
答:dart 有一个叫 LinkedHashMap,那是有顺序的
答:从 python3.6 起就是有序的了,之前都不是有序的
答:虽然有 order dict,但内部是有序的。
如同上面老哥所述,在 3.x ( x 是几我给忘了)后的版本是有序的
答:建议你把自己的问题变成关键词,Google 一下。
python dict keys ordering
答:记得 python 的字典是哈希存储,有顺序,但不是你插入的顺序
答:ruby2.6.4 是按插入的顺序
答:2.5.7 也是。不过为什么会出现需要 hash 的键自动排序的情况呢?
答:在 py2.7 试了输出任意次 keys(),每次输出的列表都是一样的,可能应该这样理解:keys()结果只有一种固定的排列情况,这个固定的序列中元素的顺序是任意的。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 字典.keys()获得的键列表元素顺序是随机的吗?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情