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 ...
随机推荐
- Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)
java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...
- 数字转换大写人民币的delphi实现
function TForm1.changeRmb(const strRmb:string):string; var txt,strhighlevel:string; i,n,m,ilen,ipos: ...
- 009-ThreadPoolExecutor运转机制详解,线程池使用1-newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor、newScheduledThreadPool
一.ThreadPoolExecutor理解 为什么要用线程池: 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务. 2.可以根据系统的承受能力,调整线程池中工作线线程的数 ...
- 为什么char *name="it",printf("%s",name) 能够输出字符串?
“it”里面是3个字符 “i”“t”“/0”,%s会打印指针指向的字符就是“i”,知道遇到“/0”停止,所以打印出来是“it”
- Linux查看某个端口使用情况并kill
Linux查看某个端口使用情况并kill 例如查看8083端口的状态: netstat -apn | grep 8083 tcp 0 0 192.168.2.17:8083 0.0.0.0:* LIS ...
- (转)以太坊(Ethereum)创世揭秘 以太坊(Ethereum)创世揭秘
什么是以太坊(Ethereum) 以太坊(Ethereum)是一个基于区块链技术,允许任何人构建和使用去中心化应用的区块链平台.像比特币一样,以太坊是开源的,并由来自全世界的支持者们共同维护.与比特币 ...
- zabbix 监控openshift pod状态
需求: pod中的容器重启一次则报警通知 pod非Runing 状态则报警 pod中的容器非true状态则报警 三个需求其实是有点重叠的 pod重启期间pod肯定会有非Running状态,只要有重启报 ...
- div+CSS实现页面的布局要点记录
1.页面任何控件可以通过div包装为一个模块,然后通过margin(外补丁)和padding(内补丁)对控件位置的摆放进行控制,以实现想要的效果. 2.position:absolute;对控件实现绝 ...
- MySql语句常用命令整理---多表查询
首先第一张表还是我们单表查询之前用到t_employee,我们在另外新建一个表t_dept(部门表)建表命令如下: drop table if exists t_dept; CREATE TABLE ...
- 第二弹:超全Python学习资源整理(进阶系列)
造一个草原要一株三叶草加一只蜜蜂.一株三叶草,一只蜂,再加一个梦.要是蜜蜂少,光靠梦也行. - 狄金森 "成为编程大牛要一门好语言加一点点天分.一门好语言,一点点天分,再加一份坚持.要是天分 ...