Python如何让字典保持有序排列


Posted in Python onApril 29, 2022

1、如何让字典保持有序

实际案例:

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

如: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

2、代码演示

(1)OrderedDict有序字典简单使用

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)

(2)模拟编写竞赛答题

# 编程模拟选手
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中如何让字典保持有序的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
Python编写登陆接口的方法
Jul 10 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
python读取和保存图片5种方法对比
Sep 12 Python
详解Python用户登录接口的方法
Apr 17 Python
Python自定义一个异常类的方法
Jun 27 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
Python json解析库jsonpath原理及使用示例
Nov 25 Python
Python3压缩和解压缩实现代码
Mar 01 Python
Python按顺序遍历并读取文件夹中文件
Apr 29 #Python
Python保存并浏览用户的历史记录
Apr 29 #Python
python解析json数据
Apr 29 #Python
python的html标准库
Apr 29 #Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 #Python
python数据处理之Pandas类型转换
Python实现将多张图片合成MP4视频并加入背景音乐
You might like
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
python简单贪吃蛇开发
2019/01/28 Python
Python 变量的创建过程详解
2019/09/02 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
中年人生感言
2014/02/04 职场文书
中学生自我鉴定
2014/02/04 职场文书
融资租赁计划书
2014/04/29 职场文书
会计电算化专业求职信
2014/06/10 职场文书
质量月口号
2014/06/20 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
七年级作文之冬景
2019/11/07 职场文书