python 实现有序字典

Python默认的字典,是不按顺序存储、输出我们添加在字典中的内容的,即是无序的字典。python 使用OrderedDict函数实现有序的字典。

示例:

d = dict([("a",1),("b",2),("c",3),("d",5),("e",6)])
print (d)
# {'e': 6, 'c': 3, 'd': 5, 'a': 1, 'b': 2}
print (d)
# {'b': 2, 'a': 1, 'd': 5, 'c': 3, 'e': 6}

  

实现有序字典

from collections import OrderedDict
od = OrderedDict([("a",1),("b",2),("c",3),("d",5),("e",6)])
print (od)
# OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 5), ('e', 6)])
print (od)
# OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 5), ('e', 6)])

  

有序的字典记住它的成员插入的顺序,可以使用排序函数,将其变为排序的字典

from collections import OrderedDict
d = {"banana":3,"apple":2,"pear":1,"orange":4}
od1 = OrderedDict(sorted(d.items(),key = lambda t : t[0]))
print (od1)
# OrderedDict([('apple', 2), ('banana', 3), ('orange', 4), ('pear', 1)])
od2 = OrderedDict(sorted(d.items(),key=lambda t : t[1]))
print (od2)
# OrderedDict([('pear', 1), ('apple', 2), ('banana', 3), ('orange', 4)])
od3 = OrderedDict(sorted(d.items(),key=lambda t : len(t[0])))
print (od3)
# OrderedDict([('pear', 1), ('apple', 2), ('orange', 4), ('banana', 3)])

  

模拟某竞赛系统,对参赛选手编程解题进行计时,选手完成题目后,把该选手的解题时间记录到字典中,以便赛后方便选手查询成绩(答题用时短,成绩优秀)

"""
使用collections 模块下的 OrderedDict 函数 实现有序的字典
""" import pprint
import time
from collections import OrderedDict
from random import randint players = list("ABCDEFGHJK") # 模拟10个选手
start = time.time() # 设置开始时间
d = OrderedDict() for i in range(10):
input("按 Enter 表示有选手完成答题:")
p = players.pop(randint(0,9-i))
end = time.time()
print("%s完成答题,第%s名,用时%s"%(p,i+1,end - start))
d[p] = (p,i+1,end-start)
pprint.pprint(d)

  

python 实现有序字典的更多相关文章

  1. python创建有序字典及字典按照值的大小进行排序

    有序字典 在Python中,字典类型里面的元素默认是无序的,但是我们也可以通过collections模块创建有序字典 # -*- coding:utf-8 -*- # python有序字典需导入模块c ...

  2. python创建有序字典OrderedDict()

    python 有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections "& ...

  3. python 学习 有序字典

    自定义创建有序字典类 dict的__getitem__方法 有些不同,想使用自定义__getitem__方法显示查询key的下标:需要研究 #/usr/bin/env python3 # -*- co ...

  4. python实现有序字典

    对于一个能够保存键值插入顺序的字典,是如何实现的? 主要有两点: 一个双向链表,用来记录字典的键值的插入顺序 一个键和链表节点的映射,主要用来删除键的时候,找到键对应的节点 python代码实现 cl ...

  5. python有序字典OrderedDict()

    转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...

  6. python基础知识4——collection类——计数器,有序字典,默认字典,可命名元组,双向队列

    1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能  Counter 我们从中挑选一些相对常用的方法来举例: 在上面的例子 ...

  7. python模块介绍- collections(5)-OrderedDict 有序字典

    1.3.5 OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序. import collections print 'Regular dictionary ...

  8. Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器

    目录 1.Python计数器Counter 2.Python有序字典OrderredDict 3.Python默认字典default 4.python可命名元组namedtuple 5.Python双 ...

  9. python之单例模式、栈、队列和有序字典

    一.单例模式 import time import threading class Singleton(object): lock = threading.RLock() # 定义一把锁 __inst ...

随机推荐

  1. Python3学习之路~6.6 类的继承

    Inheritance 继承 面向对象编程 (OOP) 语言的一个主要功能就是“继承”.继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展.通过继承创 ...

  2. 下载ez_setup

    1.下载ez_setup链接:https://pypi.org/project/ez_setup/#files

  3. 在IIS6中FLV不能播放

    故障:Flv文件在本地能播放,上传到服务器上不能播放. 原因:WIN2003加强了IIS6的MIME验证,一切未注册扩展文件格式统统显示404错误. 解决办法:在IIS服务器上添加对.FLV文件的支持 ...

  4. [django]django查询最佳实战

    from django.db.models import Max, Min, Sum, Avg, Count, Q, F Django中的F和Q函数 一.F介绍 作用:操作数据表中的某列值,F()允许 ...

  5. zabbix 监控 redis

    redis  可以直接使用zabbix官方的模板 模板地址: https://github.com/blacked/zbx_redis_template redis 主机通过脚本把数据推送到zabbi ...

  6. 2019.03.20 mvt,Django分页

    MVT模式   MVT各部分的功能:   M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理.       V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返 ...

  7. SJW-遍历我的账户左侧导航页面(句柄切换)

    页面信息类似如下: 定位页面元素: import time from selenium import webdriver # import os #A #username = "182007 ...

  8. mac-Navicat Premium 12连接Oracle

    安装及破解: https://pan.baidu.com/s/1ip0oM9p856k34t3cIExa7Q(提取码请留言) Navicat连接了Oracle数据库 测试连接失败,提示:hostnam ...

  9. java框架常见的面试题

    1.谈谈你对MVC的理解 MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开. MVC中的模型.视图.控制器 ...

  10. 5.C#释放非托管资源1

    释放非托管资源 在介绍释放非托管资源的时候,我觉得有必要先来认识一下啥叫非托管资源,既然有非托管资源,肯定有托管资源. 托管资源指的是.net可以自棕进行回收的资源,主要是指托管堆上分配的内存资源.托 ...