我使用python Dictionary创建了一个程序。在这个简单的程序中,我无法理解字典的内存结构。当我在那时从字典中检索数据时,数据不会按顺序检索。
Digit = {1 : One, 2: Two,3: Three,4: Four,5: Five,6: Six,7: Seven,8: Eight,9: nine,0: Zero}
print Digit
它会给我输出Two,Three,Five,Four
等。如果我想按顺序排序我该怎么办?
答案 0 :(得分:4)
字典是在Python中任意排序的。订单无法保证,您不应该依赖它。如果您需要有序集合,请使用OrderedDict
或列表。
如果您想按密钥顺序访问字典,请首先获取密钥列表,然后对其进行排序,然后逐步执行:
keys = Digit.keys()
keys.sort()
for i in keys:
print Digit[i]
答案 1 :(得分:1)
如果您绝对想要存储有序数据,可以使用OrderedDict,正如Burhan Khalid在他的回答中所建议的那样:
>>> from collections import OrderedDict
>>> Digit = [(1, "One"), (2, "Two"), (3, "Three"), (4, "Four"), (5, "Five"), (6, "Six"), (7, "Seven"), (8, "Eight"), (9, "Nine"), (0, "Zero")]
>>> Digit = OrderedDict(Digit)
>>> Digit
OrderedDict([(1, 'One'), (2, 'Two'), (3, 'Three'), (4, 'Four'), (5, 'Five'), (6, 'Six'), (7, 'Seven'), (8, 'Eight'), (9, 'Nine'), (0, 'Zero')])
>>> for k,v in Digit.items():
... print k, v
...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
7 Seven
8 Eight
9 Nine
0 Zero