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的Django框架中的templates设置
May 11 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
Mar 19 Python
pandas带有重复索引操作方法
Jun 08 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
一篇文章了解Python中常见的序列化操作
Jun 20 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
在pyCharm中下载第三方库的方法
Apr 18 Python
python中super()函数的理解与基本使用
Aug 30 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
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
原生JS实现多条件筛选
2020/08/19 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
捷科时代的软件测试笔试题
2015/11/09 面试题
《月迹》教学反思
2014/02/19 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
工作表扬信
2015/01/17 职场文书
实践论读书笔记
2015/06/29 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers