如何讓字典保持有序

2021-08-04 05:05:57 字數 1432 閱讀 4729

實際案例

某程式設計競賽系統,對參賽選手程式設計解題進行計時,選手完成題目後,把該選手解題用時記錄到字典中,以便賽後按選手名查詢成績。(答題用時越短,成績越優。)如:

比賽結束後,需按排名順序依次列印選手成績,如何實現?

眾所周知,python內建的dict型別是無序的,那我們要如何解決該問題呢?這時,我們可以使用collections.ordereddict來處理該問題。**如下:

# -*- coding: utf-8 -*-

from collections import ordereddict

d = ordereddict()

d['li'] = (1, 29)

d['jack'] = (2, 35)

d['jim'] = (3, 36)

for k in d:

print k

其輸出結果如下:

li

jack

jim

這時,我們遍歷字典輸出的鍵的順序就是字典錄入鍵值對的順序。為了加深我們對collections.ordereddic的理解,我們來具體模擬一下這個程式設計競賽系統,**如下:

# -*- coding: utf-8 -*-

from collections import ordereddict

from

time import time, sleep

from

random import randint

# 模擬八名參賽選手

players = list('abcdefgh')

d = ordereddict()

# 比賽開始

start = time()

for i in xrange(8):

# 模擬答題用時

sleep(3)

# 隨機選出一名選手作為答題完畢

p = players.pop(randint(0, 7-i))

# 選手答題完畢時間

end = time()

# 選手成績記錄

d[p] = (i+1, end-start)

# 公布選手成績

for k in d:

print k, d[k]

其執行結果如下:

b (1, 3.0)

d (2, 6.0)

h (3, 9.000999927520752)

f (4, 12.000999927520752)

a (5, 15.000999927520752)

c (6, 18.000999927520752)

e (7, 21.000999927520752)

g (8, 24.000999927520752)

如何讓字典保持有序

以ordereddict替代內建字典dict,依次將選手成績存入ordereddict from collections import ordereddict od ordereddict od c 1 od b 2 od a 3 list iter od 執行結果 c b a from colle...

2 6 讓字典保持有序

coding utf 8 from collections import ordereddict from time import time from random import randint 問題如下 d d jim 1,35 d leo 2,37 d bob 3,40 for k in d p...

慕課網 如何讓字典保持有序

某程式設計競賽系統個,對次參賽選擇手變成解題進行倒計時 選手完成題目後,把該選手解題用時記錄到字典中,以便後按選手名查詢成績 答題用時越短 成績越優秀 比賽結束後 需按排名順序依次列印選手成績,如何實現 from collections import ordereddict from time im...