簡體   English   中英

為什么 python 字典的元素沒有按順序打印

[英]why elements of python dictionary not get printed in sequence

我有這本字典

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?

因為dict的實現是一個hashmap或hash table ,所以wich不會按順序存儲元素。

來自文檔

CPython實現細節:鍵和值以任意順序列出,該順序是非隨機的,在Python實現中會有所不同,並且取決於字典的插入和刪除歷史。

如果順序很重要,則應使用OrderedDict

PyMOTO OrderedDict教程提供了有關OrderedDict()的良好示例。

請注意,自 Python 3.7 以來,這已發生變化

來自https://docs.python.org/3/library/stdtypes.html#mapping-types-dict - “在 3.7 版中更改:字典順序保證是插入順序。此行為是 CPython 從 3.6 開始的實現細節”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM