实际案例:
某编程竞赛系统,对参赛选手编程结题进行计时,选手完成项目后,
把该选手解题用时记录到字典中,以便赛后查询成绩。
答题用时越短,成绩越优。
{'lilei':(2,43),'hanmeimei':(3,54),'jim':(1,38),.....}
比赛结束后,需按排名顺序依次打印选手成绩,如何实现?
解决方案:
使用collections.OrderedDict
以OrderedDict代替内置字典Dict,依次将选手成绩存入OrderedDict
from time import time
from random import randint
from collections import OrderedDict
players = list('abcdefgh') # 随机构造8个选手
start = time() # 比赛开始时间
res = OrderedDict()
for i in range(8):
input(">>>") # 每次输入代表一个选手完成了比赛
player = players.pop(randint(0,7-i))
end = time()
print(i+1,player,end-start)
res[player] = (i+1,end-start) # 记录该选手的成绩和排名
print(res)
for k,v in res.items():
print(k,v)