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 smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
Python变量和数据类型详解
Feb 15 Python
python如何读写json数据
Mar 21 Python
Python实现的从右到左字符串替换方法示例
Jul 06 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
Python微信操控itchat的方法
May 31 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
Python Tornado核心及相关原理详解
Jun 24 Python
python下载的库包存放路径
Jul 27 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 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 session 预定义数组
2009/03/16 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
PHP实现计算器小功能
2020/08/28 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
jQuery事件用法详解
2016/10/06 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python将图片转换为字符画的方法
2020/06/16 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
python 弧度与角度互转实例
2020/04/15 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
个人实习生的自我评价
2014/02/16 职场文书
房产代理公证处委托书
2014/04/04 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python