案例
某編程競賽系統(tǒng),對參賽選手編程解題進(jìn)行計時,選手完成題目后,把該選手解題時用時記錄到字典中,以便賽后按選手名查詢成績,(答題用時越短,成績越優(yōu))
{'LiLei':(2, 43), 'HanMeimei':(5, 52), 'Jim':(1, 39)...}
比賽結(jié)束后,需按排名順序依次打印選手成績,如何實現(xiàn)?
解析
(1)collections.OrderedDict
d = {}
d["Jim"] = (1, 35)
d["Leo"] = (2, 37)
d["Bob"] = (3, 40)
print(d) # 亂序
# collections.OrderedDict
from collections import OrderedDict
from time import time
from random import randint
d1 = OrderedDict()
d1["Jim"] = (1, 35)
d1["Leo"] = (2, 37)
d1["Bob"] = (3, 40)
print(d1) # 有序
res = OrderedDict()
players = list('ABCDEFGH')
start = time()
for i in range(8):
input()
p = players.pop(randint(0, 7-i)) # 隨機(jī)移除一位
end = time()
print(i+1, p, end-start)
res[p] = (i+1, end-start)
print('-'*80) # 分隔符
for k in res:
print(k, res[k])