您好,登錄后才能下訂單哦!
這篇文章主要介紹“在Python中怎么讓字典保持有序”,在日常操作中,相信很多人在在Python中怎么讓字典保持有序問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”在Python中怎么讓字典保持有序”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
實際案例:
某編程競賽系統,對參賽選手編程解題進行計時,選手完成題目后,把該選手解題用時記錄到字典中,以便賽后按選手名查詢成績。(答題用時越短,成績越優秀。)
如:LiLei第2名用時43分鐘,HanMeimei第5名用時52分鐘,Jim第1名用時39分鐘
{'LiLei': (2, 43), 'HanMeimei': (5, 52), 'Jim': (1, 39), ...}
比賽結束后,需要按排名順序依次打印選手成績,如何實現?
注:為什么不用列表而用字典?就是為了方便賽后可以按名字查詢成績。
Python V3.6版本之前字典無序,3.6版本之后字典開始有序。
解決方案:
使用collections.OrderedDict
(有序字典)
以OrderedDict
代替內置字典Dict,依次將選手成績存入OrderDict
d = dict() print(d) d['Jim'] = (1, 35) d['Leo'] = (2, 37) d['Bob'] = (3, 40) print(d) # 希望迭代字典時候,按每項先后進入順序打印 for k in d: print(k) # 導入有序字典 from collections import OrderedDict d2 = OrderedDict() d['Jim'] = (1, 35) d['Leo'] = (2, 37) d['Bob'] = (3, 40) for k in d: print(k)
# 編程模擬選手 players = list('ABCDEF') # 模擬選手的答題時間 from time import time from random import randint from collections import OrderedDict d = OrderedDict() start = time() for i in range(6): # 等待用戶輸入,作為阻斷進程 input() # 每次隨機選擇一名選手答題完畢 p = players.pop(randint(0, 5 - i)) end = time() print(i + 1, p, end - start) # 記錄成績 d[p] = (i + 1, end - start) print() print('-' * 20) # 按先后進入字典順序,打印成績單 for k in d: print(k, d[k])
到此,關于“在Python中怎么讓字典保持有序”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。