Python3 里的 dict 是有序的吧?

2017-06-09 16:53:41 +08:00
 SimbaPeng
t = {}

t['a'] = 'A'
t['b'] = 'B'
t['c'] = 'C'

for k, v in t.items():
print(v)

这个代码 j 结果在 py2.7 中是 ACB, 在 py3.6 中是 ABC.

而且我试了好多次 py3.6 的字典输出顺序跟存入顺序一样啊
7450 次点击
所在节点    Python
13 条回复
AX5N
2017-06-09 17:01:18 +08:00
3.6 开始是有序的,之前是无序的
Douglee
2017-06-09 17:04:37 +08:00
那还要 collections.OrderedDict 有什么用..
jimmyye
2017-06-09 18:37:49 +08:00
https://docs.python.org/3.6/whatsnew/3.6.html#new-dict-implementation
> The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon (this may change in the future, but it is desired to have this new dict implementation in the language for a few releases before changing the language spec to mandate order-preserving semantics for all current and future Python implementations; this also helps preserve backwards-compatibility with older versions of the language where random iteration order is still in effect, e.g. Python 3.5).
264768502
2017-06-09 18:39:52 +08:00
兼容性考虑
laoyuan
2017-06-09 18:43:50 +08:00
这个“序”如何访问呢?
laoyuan
2017-06-09 18:44:15 +08:00
如何根据序来访问呢?
ipwx
2017-06-09 19:25:57 +08:00
想要有序,请使用 collections.OrderedDict
dd99iii
2017-06-09 23:03:00 +08:00
t = {}

t['b'] = 'B'
t['a'] = 'A'
t['c'] = 'C'

for k, v in t.items():
print(v)

输出顺序跟存入顺序一样?你再试试
lrxiao
2017-06-10 01:09:42 +08:00
3.6 确保 dict 有序。。。但是你不能把这个当确保的事情
lrxiao
2017-06-10 01:10:06 +08:00
第一个确保 -> 实现
zonghua
2017-06-10 01:12:14 +08:00
tablib 里面用的好多
SimbaPeng
2017-06-10 22:36:13 +08:00
@dd99iii 一样啊,你自己用 3.6 试试
dd99iii
2017-06-11 00:28:13 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/367278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX