python 实现有序字典
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 实现有序字典的更多相关文章
- python创建有序字典及字典按照值的大小进行排序
有序字典 在Python中,字典类型里面的元素默认是无序的,但是我们也可以通过collections模块创建有序字典 # -*- coding:utf-8 -*- # python有序字典需导入模块c ...
- python创建有序字典OrderedDict()
python 有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections "& ...
- python 学习 有序字典
自定义创建有序字典类 dict的__getitem__方法 有些不同,想使用自定义__getitem__方法显示查询key的下标:需要研究 #/usr/bin/env python3 # -*- co ...
- python实现有序字典
对于一个能够保存键值插入顺序的字典,是如何实现的? 主要有两点: 一个双向链表,用来记录字典的键值的插入顺序 一个键和链表节点的映射,主要用来删除键的时候,找到键对应的节点 python代码实现 cl ...
- python有序字典OrderedDict()
转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...
- python基础知识4——collection类——计数器,有序字典,默认字典,可命名元组,双向队列
1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能 Counter 我们从中挑选一些相对常用的方法来举例: 在上面的例子 ...
- python模块介绍- collections(5)-OrderedDict 有序字典
1.3.5 OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序. import collections print 'Regular dictionary ...
- Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器
目录 1.Python计数器Counter 2.Python有序字典OrderredDict 3.Python默认字典default 4.python可命名元组namedtuple 5.Python双 ...
- python之单例模式、栈、队列和有序字典
一.单例模式 import time import threading class Singleton(object): lock = threading.RLock() # 定义一把锁 __inst ...
随机推荐
- RestFramework——API设计规范
what's the RESTful RestFramework是一个能快速为我们提供API接口,方便我们编程的框架.API是后端编程人员写的,为了让前端拿数据的一个接口,通常就是以url的形式存在. ...
- Jmeter测试实践:文件上传接口
1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求. Basic部分修改如下: Advanced部分我做任何修改,完全保持默认.但是有人说Imple ...
- 011-docker-安装-rabbitmq-management:3.7.13
1.搜索镜像 docker search rabbitmq 2.拉取合适镜像 选择合适tag:https://hub.docker.com/,下载3.7.13 带web管理界面版本 docker pu ...
- 002-pro ant design-Unexpected end of JSON input while parsing near '...错误解决方案
解决方法:先清除缓存,再重新安装 清除缓存 npm cache clean --force 重新安装 npm install
- CAS缺点
CAS虽然很高效的解决原子操作,但是CAS仍然存在三大问题.ABA问题,循环时间长开销大和只能保证一个共享变量的原子操作 1. ABA问题.因为CAS需要在操作值的时候检查下值有没有发生变化,如 ...
- java native方法及JNI实例 (转)
转自:http://blog.csdn.net/xw13106209/article/details/6989415 1.参考文献: http://blog.csdn.net/youjianbo_ha ...
- php-fpm sock 进程池优化
更改tcp为sock ;listen = 127.0.0.1:9000 listen = /dev/shm/php-cgi.sock pm = static \\静态进程池 pm.max_childr ...
- 常用 shell 命令
watch watch -n 1 -d "ps -ef | grep php" 功能:监控 PHP 进程的变化 原理: 重复的执行后面的命令,默认时间间隔是2秒 参数解释 -d 高 ...
- Sql Server 生成连续时间段
方法一: declare @StartTime datetime declare @EndTime datetime set @StartTime ='2019-02-1 00:00' set @En ...
- Linux-nmon系统性能监控工具的使用及报表产出
在进行性能测试的时候,需要获取服务器的各项指标,例如 CPU.MEM.I/O.DISK 等.网上有很多的监控工具,nmon 就是其中的一个,其可与 JMeter结合使用,测试系统的性能.其概要的介绍, ...