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中用max()方法求最大值的介绍
May 15 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
Python实现ping指定IP的示例
Jun 04 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
pytorch打印网络结构的实例
Aug 19 Python
python类的实例化问题解决
Aug 31 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
Django路由层如何获取正确的url
Jul 15 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牛逼的面试题分享
2013/01/18 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
列表内容的选择
2006/06/30 Javascript
javascript Object与Function使用
2010/01/11 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python3基础之输入和输出实例分析
2014/08/18 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
pytorch forward两个参数实例
2020/01/17 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
《只有一个地球》教学反思
2014/02/14 职场文书
个人安全生产承诺书
2014/05/22 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
博士生专家推荐信
2015/03/25 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python