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 ...
随机推荐
- 运维自动化ansible基础
云计算三种服务架构 IAAS: 不提供OS 只购买硬件(网络,存储,计算) PAAS: 提供硬件和OS和开发和运行环境 只需要开发应用软件 SAAS: 提供 硬件 os 软件 相当于直接购买软 ...
- 004-RestTemplate 使用常见问题
一.使用 同前三节:ClientGetGoodsByGoodsIdResponse response = restTemplate.postForObject(svcUrl, request, Res ...
- 继承:继承后子类构造函数具有隐式super,所以子类中所以的构造函数默认会访问父类中的空参数的构造函数
class Test { Test(){ System.out.println("Test"); } Test(String name){ System.out.println(& ...
- Marathon1.5以上版本配置
今天部署marathon还按照之前的方式配置,结果启动时报错 Dec 03 23:51:36 bigdata01.zetyun.com marathon[12311]: No start hook f ...
- SaltStack 数据系统 Grains Pillar
grains 先来一个很好用的命令 # salt '*' grains.items \\基本上输出了所有你想要的信息 192.168.100.138: ---------- SSDs: biosrel ...
- linux 常用简单命令
1.ps获取dhcpd进程状态 ps -aux |grep dhcpd |grep -v grep 排除包含grep的那条进程 ps -aux |grep dhcpd |grep -v grep | ...
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(十)使用JRTPLIB传输RTP数据
myRtspClient通过简单修改JRTPLIB的官方例程作为其RTP传输层实现.因为JRTPLIB使用的是CMAKE编译工具,这就是为什么编译myRtspClient时需要预装CMAKE. 该部分 ...
- js图片压缩
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 解决vmvare关闭过慢
打开虚拟机文件夹下的.vmx文件,将下面的内容添天加进去,保存prefvmx.minVmMemPct = "100" mainMem.useNamedFile = "FA ...
- Java中通过Class类获取Class对象的方法详解
方式1:通过Object类的getObject()方法 Person p = new Person(); Class c = p.getClass(); 方式2: 通过 类名.class 获取到字节码 ...