跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 字典.keys()获得的键列表元素顺序是随机的吗?
未分類
11 5 月 2020

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

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

資深大佬 : oldbird 57

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

大佬有話說 (19)

  • 資深大佬 : imn1

    3.5 后是依次加入的顺序
    d[‘b’]=1
    d[‘a’]=2
    顺序就是 b a

  • 資深大佬 : sikariba

    我怎么记得是 3.7,PyPy 不记得,CPython 是 3.6 实现的,然后是到 3.7 才推广到全语言的

  • 資深大佬 : lihongjie0209

    Python 不知道, 但是在 Java 中, 为了避免客户依赖这种特性, 哪怕是内部有序的, 返回给你的时候都会打乱.

    既然使用 hash 表, 就不要再考虑顺序了

  • 資深大佬 : jdhao

    随机的,需要顺序,用 ordered dict

  • 資深大佬 : love

    @lihongjie0209 hash 顺序挺有用,只要库明确支持就可以放心用,比如我大 js 明确可以依赖 key 顺序

  • 資深大佬 : drawstar

    我记得 python 中好像是随机的

  • 資深大佬 : josephpei

    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.

  • 資深大佬 : josephpei

    go 之前版本是键列表是有序的,后来为了避免大家依赖这个,新版本改成无序的了

  • 資深大佬 : hjq98765

    不是随机的,感觉是排过序的:

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

    ——————–

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

  • 資深大佬 : tkmiles

    看版本, 3.6 之前是”无序”的, 也就是 hash 顺序

    3.6 之后则是按 key 插入顺序

  • 資深大佬 : axer0912

    dart 有一个叫 LinkedHashMap,那是有顺序的

  • 資深大佬 : tfdetang

    从 python3.6 起就是有序的了,之前都不是有序的

  • 資深大佬 : fank99

    虽然有 order dict,但内部是有序的。
    如同上面老哥所述,在 3.x ( x 是几我给忘了)后的版本是有序的

  • 資深大佬 : littlewey

    建议你把自己的问题变成关键词,Google 一下。
    python dict keys ordering

  • 資深大佬 : ibreaker

    @littlewey。。。。。

  • 資深大佬 : nongmei

    记得 python 的字典是哈希存储,有顺序,但不是你插入的顺序

  • 資深大佬 : crella

    ruby2.6.4 是按插入的顺序

  • 資深大佬 : crella

    2.5.7 也是。不过为什么会出现需要 hash 的键自动排序的情况呢?

  • 主 資深大佬 : oldbird

    在 py2.7 试了输出任意次 keys(),每次输出的列表都是一样的,可能应该这样理解:keys()结果只有一种固定的排列情况,这个固定的序列中元素的顺序是任意的。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具