为什么python词典的元素不能按顺序打印

时间:2011-04-22 06:21:35

标签: python dictionary

我有这本词典

sr = {'DTW':'CNT','FWA':'CNT','GRR':'CNT','IND':'CNT','MKE':'CNT','MLI':'CNT','MSP':'CNT','OMA':'CNT','ORD':'CNT','SBN':'CNT','STL':'CNT','BDL':'EST','BOS':'EST','BWI':'EST','CLE':'EST','CMH':'EST','CVG':'EST','EWR':'EST','IAD':'EST','JFK':'EST','MDT':'EST','PHL':'EST','PIT':'EST','ROC':'EST','ABQ':'CNT','AUS':'CNT','DEN':'CNT','DFW':'CNT','ELP':'CNT','IAH':'CNT','LRD':'CNT','MCI':'CNT','MFE':'CNT','MSY':'CNT','OKC':'CNT','SAT':'CNT','TUL':'CNT','ATL':'EST','BNA':'EST','CLT':'EST','JAX':'EST','MCO':'EST','MEM':'EST','MIA':'EST','RDU':'EST','RIC':'EST','SDF':'EST','SJU':'EST','TPA':'EST','ANC':'WST','HNL':'WST','LAS':'WST','LAX':'WST','PDX':'WST','PHX':'WST','RNO':'WST','SAN':'WST','SEA':'WST','SFO':'WST','SLC':'WST','SMF':'WST','TUS':'WST'}

for s, r in sr.iteritems():
   print s, r 

但是在打印时从

开始打印
JFK EST
MKE CNT

为什么呢?为什么打印不是用DTW盯着?

2 个答案:

答案 0 :(得分:10)

因为dict的实现是一个hashmap或hash table,所以它不会按顺序存储元素。

来自docs

  

CPython实现细节:密钥   和值以任意方式列出   非随机的订单会有所不同   跨Python实现,和   取决于字典的历史   插入和删除。

如果订单很重要,您应该使用OrderedDict

答案 1 :(得分:1)

PyMOTO OrderedDict教程提供了有关OrderedDict()的好例子。