在Python中如何让字典保持有序

 更新时间:2022年04月29日 11:19:47   作者:AllardZhao  
这篇文章主要介绍了在Python中如何让字典保持有序,文章基于python的相关资料展开详细内容,需要的小伙伴可以参考一下

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中如何让字典保持有序的文章就介绍到这了,更多相关Python字典有序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用pymysql模块操作mysql增删改查实例分析

    Python使用pymysql模块操作mysql增删改查实例分析

    这篇文章主要介绍了Python使用pymsql模块操作mysql增删改查,结合实例形式分析了Python使用pymsql模块针对mysql进行增删改查操作的相关实现方法与操作注意事项,需要的朋友可以参考下
    2019-12-12
  • Python 为什么推荐蛇形命名法原因浅析

    Python 为什么推荐蛇形命名法原因浅析

    这篇文章主要介绍了Python 为什么推荐蛇形命名法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • python办公自动化(Excel)的实例教程

    python办公自动化(Excel)的实例教程

    使用Excel自动化处理,将会用到Python第三方库,所以我们需要提前通过来进行安装,下面这篇文章主要给大家介绍了关于python办公自动化(Excel)的相关资料,需要的朋友可以参考下
    2022-11-11
  • python实现自动登录后台管理系统

    python实现自动登录后台管理系统

    这篇文章主要为大家详细介绍了python实现自动登录后台管理系统,并进行后续操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 一文带你掌握Python中的双下划线写法

    一文带你掌握Python中的双下划线写法

    在 Python 中,双下划线--也被称为“dunder”--是一种用于修饰类属性名称或类方法名称的行为,下面小编就来和大家详细讲讲如何在Python中使用双下划线吧
    2023-10-10
  • numpy中数组的堆叠方法

    numpy中数组的堆叠方法

    本文主要介绍了numpy中数组的堆叠方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python实现的爬取豆瓣电影信息功能案例

    Python实现的爬取豆瓣电影信息功能案例

    这篇文章主要介绍了Python实现的爬取豆瓣电影信息功能,结合具体实例形式分析了Python基于requests库的爬虫使用技巧,需要的朋友可以参考下
    2019-09-09
  • Pytorch实现的手写数字mnist识别功能完整示例

    Pytorch实现的手写数字mnist识别功能完整示例

    这篇文章主要介绍了Pytorch实现的手写数字mnist识别功能,结合完整实例形式分析了Pytorch模块手写字识别具体步骤与相关实现技巧,需要的朋友可以参考下
    2019-12-12
  • Python实现蒙特卡洛模拟的示例代码

    Python实现蒙特卡洛模拟的示例代码

    这篇文章主要为大家详细介绍了如何利用Python实现蒙特卡洛模拟,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以了解一下
    2023-03-03
  • 基于python进行抽样分布描述及实践详解

    基于python进行抽样分布描述及实践详解

    这篇文章主要介绍了基于python进行抽样分布描述及实践详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论