初学者的 Python 问题,自己想不明白

2017-02-24 21:31:52 +08:00
 yyy32
d={‘ a ’=1,'b'=5,'c'=2}
for value in d.itervalue():
print value
这个输出的是 1 2 5
而 d={‘ a ’=1,'c'=5,'b'=2}
for value in d.itervalue():
print value
这输出的是 1,5,2
这是为什么呢
2344 次点击
所在节点    Python
9 条回复
staticor
2017-02-24 22:23:08 +08:00
问题是 dict 迭代的顺序问题么

首先要搜一下 dict 的输出是按什么顺序.

然后还可以进一步, 看自己构造的 2 个 dict 用相同 k-v, 是一样的对象?
yyy32
2017-02-24 22:35:59 +08:00
@staticor 哦 是因为 dict 是无序的吗
guyskk
2017-02-24 23:10:00 +08:00
@yyy32 python3.6 之前,dict 是无序的, 3.6 改了实现,是有序的
wohenyingyu02
2017-02-24 23:47:33 +08:00
和 itervalue 怎么实现的有关吧,看楼主 print 的架势似乎是 python2 ?
kimoCHG
2017-02-24 23:55:35 +08:00
关于遍历的顺序, 一般语言都会写上不保证顺序吧
kkxxxxxxx
2017-02-25 00:49:42 +08:00
kkxxxxxxx
2017-02-25 00:49:58 +08:00
PythonAnswer
2017-02-25 01:25:07 +08:00
老的 dict 是 hash ,无序。想要有顺序可以导入
OrderedDict 。

最新版本改成有序的了。
yyy32
2017-02-25 09:16:25 +08:00
好的 谢谢各位了

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

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

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

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

© 2021 V2EX