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的@property装饰器的用法
Apr 28 Python
Python实现模拟时钟代码推荐
Nov 08 Python
django+js+ajax实现刷新页面的方法
May 22 Python
浅谈django model postgres的json字段编码问题
Jan 05 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
python 实现selenium断言和验证的方法
Feb 13 Python
Python中字符串与编码示例代码
May 20 Python
详解python播放音频的三种方法
Sep 23 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
python代码能做成软件吗
Jul 24 Python
浅析Python中的套接字编程
Jun 22 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 使用memcached简单示例分享
2015/03/05 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
Python获取远程文件大小的函数代码分享
2014/05/13 Python
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
解析Python编程中的包结构
2015/10/25 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
pymysql 开启调试模式的实现
2019/09/24 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
python性能测试工具locust的使用
2020/12/28 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
天网面试题
2013/04/07 面试题
大学四年学习的自我评价分享
2013/12/09 职场文书
制药工程专业毕业生推荐信
2013/12/24 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
开门红主持词
2014/04/02 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
党校培训学习心得体会
2016/01/06 职场文书
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript