python高级(如何让字典保持有序)

本文介绍了一种在编程竞赛中记录选手解题时间和生成排名的方法。通过使用OrderedDict,可以确保选手的成绩按照比赛完成的顺序正确排序。文章详细解释了如何随机选择选手并记录他们的完成时间和最终排名。

案例:

某编程竞赛系统,对参赛选手编程解题进行计时,选手完成题目后,把该选手解题用时记录到字典中,以便赛后按选手名查询成绩。(答题用时越短,成绩越优)

{'LiLei':(2,43),'HanMeimei':(5,52),'jim':(1,39)...}

比赛结束后,需按排名顺序依次打印选手成绩,如何实现?

from time import time
from random import randint
from collections import OrderedDict    #导入标准库中OrderedDict模块,模块功能是按照程序先加入的键值对进行排序

d = OrderedDict()   
players = list('abcdefg')   #建立选手成员列表
start = time()    #记录比赛开始时间
for i in range(7):     #循环比赛选手的人数
    input('完成考试')    
    p = players.pop(randint(0, 6-i))    #当选手点击考试完成后从选手成员列表随机删除最后一个该答题完毕的成员
    end = time()   #记录考试完成时间
    d[p] = (i+1, end - start)    #选手的姓名作为键,元组记录名次和用时时间作为值添加进字典中
    print()
    print('-'*20)
for k in d:
    print(k, d[k])    #选手姓名:(名次,用时)格式化输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值