python模块简介之有序字典(OrderedDict)

yipeiwu_com7年前Python基础

有序字典-OrderedDict简介

示例

有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。参见下面的例子:

import collections

print 'Regular dictionary:'
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
  print k, v

print '\nOrderedDict:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
  print k, v

运行结果如下:

-> python test7.py
Regular dictionary:
a A
c C
b B
e E
d D

OrderedDict:
a A
b B
c C
d D
e E

可以看到通常字典不是以插入顺序遍历的。

相等性

判断两个有序字段是否相等(==)需要考虑元素插入的顺序是否相等

import collections

print 'dict    :',
d1 = {}
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = {}
d2['e'] = 'E'
d2['d'] = 'D'
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'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = collections.OrderedDict()
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

print d1 == d2

运行结果如下:

-> python test7.py
dict    : True
OrderedDict: False

而当判断一个有序字典和其它普通字典是否相等只需判断内容是否相等。

注意

OrderedDict 的构造器或者 update() 方法虽然接受关键字参数,但因为python的函数调用会使用无序的字典来传递参数,所以关键字参数的顺序会丢失,所以创造出来的有序字典不能保证其顺序。

参考资料

https://docs.python.org/2/library/collections.html
https://pymotw.com/2/collections/ordereddict.html

相关文章

pygame学习笔记(5):游戏精灵

pygame学习笔记(5):游戏精灵

据说在任天堂FC时代,精灵的作用相当巨大,可是那时候只知道怎么玩超级玛丽、魂斗罗,却对精灵一点也不知。pygame.sprite.Sprite就是Pygame里面用来实现精灵的一个类,使...

python实现mysql的读写分离及负载均衡

python实现mysql的读写分离及负载均衡

Oracle数据库有其公司开发的配套rac来实现负载均衡,目前已知的最大节点数能到128个,但是其带来的维护成本无疑是很高的,并且rac的稳定性也并不是特别理想,尤其是节点很多的时候。...

Django在pycharm下修改默认启动端口的方法

Django在pycharm下修改默认启动端口的方法

如题,度娘前几条答案说的都不清不楚,俺来补上: 点击下拉选项中的Edit Configuration进入如下界面: 如果左侧没有出现django server,说明您的项目是不dja...

使用python和pygame绘制繁花曲线的方法

使用python和pygame绘制繁花曲线的方法

前段时间看了一期《最强大脑》,里面各种繁花曲线组合成了非常美丽的图形,一时心血来潮,想尝试自己用代码绘制繁花曲线,想怎么组合就怎么组合。 真实的繁花曲线使用一种称为繁花曲线规的小玩意绘制...

Python打包方法Pyinstaller的使用

Python打包方法Pyinstaller的使用

Python是一个脚本语言,被解释器解释执行。它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Py...