>>> d = {(x, x+1): x for x in range(10)}
>>> d
{(0, 1): 0, (1, 2): 1, (6, 7): 6, (5, 6): 5, (7, 8): 7, (8, 9): 8, (4, 5): 4, (2, 3): 2, (9, 10): 9, (3, 4): 3}
问题是, d 为什么是按照上面这种顺序生成的,为什么不是
{(0, 1): 0, (1, 2): 1, (2, 3): 2, (3, 4): 3, (4, 5): 4, (5, 6): 5, (6, 7): 6, (7, 8): 7, (8, 9): 8, (9, 10): 9}
1
casparchen 2016-11-28 19:15:50 +08:00
字典非有序
|
2
dslwind OP @casparchen 这个我可以理解,但是
>>> d = {x:x for x in range(10)} >>> d {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} 这里是有序的,为什么 key 是 tuple 的时候就无序了呢? |
5
dtfm 2016-11-28 19:44:17 +08:00 via Android
要有序字典可以
from collections import OrderedDict 按照装入的顺序排列 |
6
SuperMild 2016-11-28 19:47:14 +08:00 via iPad 1
字典不保证有序是标准。但任何语言标准都有具体实现,在实现时可能恰好有序,也可能恰好无序,但这些是语言背后的实现,我们语言的用户不用理会,现在恰好有序的,以后也有可能修改成无序。因此,标准说了无序,我们就要一律把它当作无序来处理。
|
7
myjiayan 2016-11-29 01:44:54 +08:00
别着急, python3.6+就会默认所有字典有序!
|