
>>> 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 的时候就无序了呢? |
4 huangfs 2016-11-28 19:29:06 +08:00 @dslwind 你确定这样就是有序的? |
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 字典不保证有序是标准。但任何语言标准都有具体实现,在实现时可能恰好有序,也可能恰好无序,但这些是语言背后的实现,我们语言的用户不用理会,现在恰好有序的,以后也有可能修改成无序。因此,标准说了无序,我们就要一律把它当作无序来处理。 |
7 myjiayan 2016-11-29 01:44:54 +08:00 别着急, python3.6+就会默认所有字典有序! |