关于字典:为什么python中的iteritems()函数以随机顺序检索键值对?

Why does iteritems() function in python retrieves the key-value pair in random order?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
>>> basket = {'fruit' : 'apple','veg' : 'potato', 'grain' : 'rice', 'liquor' : 'wine'}
>>> for k,v in basket.iteritems():
...     print k,v
...
veg potato
liquor wine
fruit apple
grain rice
>>>

从上面的例子可以看出,键值对不是从左到右或从右到左打印的。

为了得到排序结果,我使用

1
2
3
4
5
6
7
8
9
>>> basket = {'fruit' : 'apple','veg' : 'potato', 'grain' : 'rice', 'liquor' : 'wine'}
>>> for k,v in sorted(basket.iteritems()):
...     print k,v
...
fruit apple
grain rice
liquor wine
veg potato
>>>

当我尝试获取键值对的索引时,我得到

1
2
3
4
5
6
7
8
9
>>> basket = {'fruit' : 'apple','veg' : 'potato', 'grain' : 'rice', 'liquor' : 'wine'}
>>> for k,v in enumerate(basket.iteritems()):
...     print k,v
...
0 ('veg', 'potato')
1 ('liquor', 'wine')
2 ('fruit', 'apple')
3 ('grain', 'rice')
>>>

为什么会这样?如何从左到右打印字典定义中出现的键值对?


如果您曾经创建过哈希表,那么您就知道不需要存储顺序。

实际上,这是额外的工作。

如果要保持插入项的顺序,可以使用collections.ordereddict,它就是这样做的。