码迷,mamicode.com
首页 > 编程语言 > 详细

python之collections模块(OrderDict,defaultdict)

时间:2019-01-04 22:38:06      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:count   coroutine   com   tor   pytho   组元   命名   str   tar   

前言:

import collections
print([name for name in dir(collections) if not name.startswith("_")])
[‘AsyncIterable‘, ‘AsyncIterator‘, ‘Awaitable‘, ‘ByteString‘, ‘Callable‘, ‘ChainMap‘, ‘Container‘, ‘Coroutine‘, 
‘Counter‘, ‘Generator‘, ‘Hashable‘, ‘ItemsView‘, ‘Iterable‘, ‘Iterator‘, ‘KeysView‘, ‘Mapping‘, ‘MappingView‘, 
‘MutableMapping‘, ‘MutableSequence‘, ‘MutableSet‘, ‘OrderedDict‘, ‘Sequence‘, ‘Set‘, ‘Sized‘, ‘UserDict‘, ‘UserList‘, 
‘UserString‘, ‘ValuesView‘, ‘abc‘, ‘defaultdict‘, ‘deque‘, ‘namedtuple‘]

 常用:

a)Counter: 计数器,用于统计元素的数量

b)OrderDict:有序字典

c)defaultdict:值带有默认类型的字典

d)namedtuple:可命名元组,通过名字来访问元组元素

e)deque :双向队列,队列头尾都可以放,也都可以取(与单向队列对比,单向队列只能一头放,另一头取)

3.from colllections import OrderDict

python自带的字典是按key 的hash排序,所以大家都认为map是无序的。但是python的collections模块有一个OrderDict类。是一个有顺序的map.

创建

a=OrderedDict()
b=OrderedDict({2:b,1:c})

m={2:b,1:c}

print(a,b,m)

# OrderedDict() 
# OrderedDict([(1, ‘c‘), (2, ‘b‘)])
# {1: ‘c‘, 2: ‘b‘}
#同样是保存了几个元素,但是使用OrderedDict会根据放入元素的先后顺序进行排序。所以输出的值是排好序的。

方法

技术分享图片

map里面的操作他都有

区别map

d2={}
d2[a]=A
d2[b]=B
d2[c]=C

d3={}
d3[c]=C
d3[a]=A
d3[b]=B

print(d2 == d3)=>true

 

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)=>False

其他

dd = {banana: 3, apple:4, pear: 1, orange: 2}
# sorted(dd.items(), key=lambda t: t[1])==>[(‘pear‘, 1), (‘orange‘, 2), (‘banana‘, 3), (‘apple‘, 4)]

#按key排序
kd = OrderedDict(sorted(dd.items(), key=lambda t: t[0]))
print(kd)
#按照value排序
vd = 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)])

 

python之collections模块(OrderDict,defaultdict)

标签:count   coroutine   com   tor   pytho   组元   命名   str   tar   

原文地址:https://www.cnblogs.com/wqbin/p/10222768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!