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 相关文章推荐
图文详解WinPE下安装Python
May 17 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
基于python实现名片管理系统
Nov 30 Python
利用Python实现微信找房机器人实例教程
Mar 10 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 Python
Python简易版图书管理系统
Aug 12 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
Python celery原理及运行流程解析
Jun 13 Python
python递归函数用法详解
Oct 26 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
加速XP搜索功能堪比vista
2007/03/22 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
Cakephp 执行主要流程
2010/03/24 PHP
PHP 事件机制(2)
2011/03/23 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
vue mounted组件的使用
2018/06/18 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
python与字符编码问题
2019/05/24 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
python中sys模块是做什么用的
2020/08/16 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
市场部专员岗位职责
2013/11/30 职场文书
酒店总经理助理职责
2014/02/12 职场文书
设备售后服务承诺书
2014/05/30 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
老兵退伍标语
2014/10/07 职场文书
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript