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中多线程及程序锁浅析
Jan 21 Python
浅谈python中set使用
Jun 30 Python
使用python实现tcp自动重连
Jul 02 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
Python中int()函数的用法浅析
Oct 17 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
详解python解压压缩包的五种方法
Jul 05 Python
python实现静态web服务器
Sep 03 Python
pytorch构建多模型实例
Jan 15 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
python实现人工蜂群算法
Sep 18 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 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 和 MySQL 基础教程(三)
2006/10/09 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
初识Laravel
2014/10/30 PHP
初识PHP中的Swoole
2016/04/05 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
jquery 问答知识整理
2010/02/11 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
五月的鲜花活动方案
2014/08/21 职场文书
优秀员工推荐材料
2014/12/20 职场文书
怎样写观后感
2015/06/19 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL