python模块介绍- collections(5)-OrderedDict 有序字典
1.3.5 OrderedDict 有序字典
OrderedDict是dict的子类,它记住了内容添加的顺序。
import collections
print 'Regular dictionary:'
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
print k, v
print '\nOrderedDict:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
print k, v
执行结果:
# ./collections_ordereddict_iter.py
Regular dictionary:
a A
c C
b B
OrderedDict:
a A
b B
c C
OrderedDict要内容和顺序完全相同才会视为相等。
import collections
print 'dict :',
d1 = {}
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d2 = {}
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'
print d1 == d2
print 'OrderedDict:',
d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d2 = collections.OrderedDict()
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'
print d1 == d2
执行结果:
# ./collections_ordereddict_equality.py
dict : True
OrderedDict: False
定义:
class collections.OrderedDict([items])
注意顺序以添加顺序为准,和修改的顺序无关。
特殊方法:OrderedDict.popitem(last=True) 。last为True是LIFO,即为堆栈,反之是FIFO,即为队列。还支持排序:reversed().
有序字典和有序字典的相等比较,是顺序相关的;和其他映射类型比较,是顺序无关的。
手册中的实例:
>>> # regular unsorteddictionary
>>> d = {'banana': 3, 'apple':4,'pear': 1, 'orange': 2}
>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(),key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3),('orange', 2), ('pear', 1)])
>>> # dictionary sorted by value
>>> OrderedDict(sorted(d.items(),key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2),('banana', 3), ('apple', 4)])
>>> # dictionary sorted bylength of the key string
>>> OrderedDict(sorted(d.items(),key=lambda t: len(t[0])))
OrderedDict([('pear', 1), ('apple', 4),('orange', 2), ('banana', 3)])
如果想根据插入顺序排序:
classLastUpdatedOrderedDict(OrderedDict):
'Store items in the order the keys were last added'
def __setitem__(self, key, value):
if key in self:
del self[key]
OrderedDict.__setitem__(self, key, value)
上面已经存在的元素再次插入,就会移动到最后。
还可以与Counter结合,是Counter记住第一次元素出现的顺序。
classOrderedCounter(Counter, OrderedDict):
'Counter that remembers the order elementsare first encountered'
def __repr__(self):
return '%s(%r)' % (self.__class__.__name__,OrderedDict(self))
def __reduce__(self):
return self.__class__, (OrderedDict(self),)
参考资料:
SeeAlso:
collections(http://docs.python.org/library/collections.html) The standard library
documentationfor this module.
原文链接:http://blog.csdn.net/oychw/article/details/8817856
python模块介绍- collections(5)-OrderedDict 有序字典的更多相关文章
- Python collections系列之有序字典
有序字典(orderedDict ) orderdDict是对字典类型的补充,他记住了字典元素添加的顺序 1.创建一个有序字典 import collections dic = collections ...
- python模块之collections
我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型: (1) ...
- OrderedDict 有序字典以及读取json串时如何保持原有顺序
1. OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序.比较时,OrderedDict要内容和顺序完全相同才会视为相等 import collectio ...
- python模块介绍- multi-mechanize 性能测试工具
python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
- python模块介绍- binascii 二进制和ASCII转换
python模块介绍-binascii二进制和ASCII转换 目录 项目简介 简介: Uu编码 Binhex编码 Base64编码 QP码 CRC校验和 二进制转换 其他实例 项目简介 Python中 ...
- python模块介绍- HTMLParser 简单的HTML和XHTML解析器
python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...
- python模块介绍-locustio:性能测试工具locustio
转自:http://automationtesting.sinaapp.com/blog/m_locustio_doc python测试文章 http://weibo.com/cizhenshi?is ...
- Python模块:collections
collections模块常用的数据类型: (1)namedtuple(): #创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素. fr ...
随机推荐
- Cucumber
http://www.ibm.com/developerworks/library/a-automating-ria/ Cucumber is a testing framework that hel ...
- 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用
当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...
- 有关html5设计那些事,你真的考虑过前端的实现吗(最近别人经常问我这种问题,所以我就写一篇了,可能也有别人和我一样吐槽过)
很久以前在安卓2.0系统刚刚的时候就对HTML5比较关注!因为我也是那个时候刚刚入行做前端的.那个时候最大的乐趣就是看着w3plus上面各种css3的效果,觉得哇,好牛逼原来可以这样做,然后3年过去了 ...
- 网站SEO优化之Robots.txt文件写法。
作为网站开发者或网站管理员一定知道网站对搜索引擎的优化有多重要,好的网站不仅要有漂亮的界面,良好的用户体验,还要有较高的更新频率.要被百度.google这样的搜索引擎大量收录,才能增加网站展示量,访问 ...
- 基于iSCSI的SQL Server 2012群集测试(三)--SQL Server 2012群集安装总结
5.SQL Server 2012群集安装总结 5.1 群集与非群集的安装区别总结 SQL Server虚拟名称: 非群集环境下,本地服务器的名称就是SQL Server服务器名称:但在群集环境下,由 ...
- 微信小程序开放公测了 晚上又可以通宵搞代码了
就在刚刚22:15分,微信公众平台的服务号发来好消息说小程序开放公测了,喜大普奔啊!!!码农们晚上又可以通宵搞测试了.之前还猜测16日微信小论坛小程序专场上会公布,没想到提前了那么多天,效率挺高的,而 ...
- Inno Setup制作应用程序安装包
我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...
- 分分钟教会大家第一个Spring入门案例
1.下载Spring jar包,并添加到项目中. 官网地址http:springsource.org 2.在项目中新建一个类 package cn.test; public class He ...
- CSS选择器的特殊性和LOVE HA
在CSS中当几个相同的选择器对同一个元素有不同的规则时,该怎么应用这些规则呢? 答案就是:CSS特殊性(CSS specificity) 选择器特殊性有选择器本身组成,特殊性由4个数值表述:0, 0, ...
- C/C++开发者必不可少的15款编译器+IDE
1)Best IDE for C/C++ – kDevelop(http://kdevelop.org/) Kdevelop是一个专为C/C++及其他语言的开源扩展插件IDE.它基于KDevPlat ...