这里有新鲜出炉的 Python 多线程编程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
本篇文章主要介绍了 python 中 OrderedDict 的使用方法详解,非常具有实用价值,需要的朋友可以参考下
很多人认为 python 中的字典是无序的,因为它是按照 hash 来存储的,但是 python 中有个模块 collections(英文,收集、集合),里面自带了一个子类
OrderedDict,实现了对字典对象中元素的排序。请看下面的实例:
- 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 "\nOrder dictionary"
- d1 = collections.OrderedDict()
- d1['a'] = 'A'
- d1['b'] = 'B'
- d1['c'] = 'C'
- d1['1'] = '1'
- d1['2'] = '2'
- for k,v in d1.items():
- print k,v
输出:
Regular dictionary a A c C b B Order dictionary a A b B c C 1 1 2 2
可以看到,同样是保存了 ABC 等几个元素,但是使用 OrderedDict 会根据放入元素的先后顺序进行排序。所以输出的值是排好序的。
OrderedDict 对象的字典对象,如果其顺序不同那么 Python 也会把他们当做是两个不同的对象,请看事例:
- print 'Regular dictionary:'
- d2={}
- d2['a']='A'
- d2['b']='B'
- d2['c']='C'
- d3={}
- d3['c']='C'
- d3['a']='A'
- d3['b']='B'
- print d2 == d3
- print '\nOrderedDict:'
- d4=collections.OrderedDict()
- d4['a']='A'
- d4['b']='B'
- d4['c']='C'
- d5=collections.OrderedDict()
- d5['c']='C'
- d5['a']='A'
- d5['b']='B'
- print d1==d2
输出:
Regular dictionary: True
OrderedDict: False
再看几个例子:
- dd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
- #按key排序
- kd = collections.OrderedDict(sorted(dd.items(), key=lambda t: t[0]))
- print kd
- #按照value排序
- vd = collections.OrderedDict(sorted(dd.items(),key=lambda t:t[1]))
- print vd
- #输出
- OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
- OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
来源: http://www.phperz.com/article/17/0512/334809.html