python之collections模块(OrderDict,defaultdict)

前言:

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)])

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

时间: 2024-10-13 10:17:08

python之collections模块(OrderDict,defaultdict)的相关文章

简介Python的collections模块中defaultdict类型

这里我们来简介Python的collections模块中defaultdict类型的用法,与内置的字典类最大的不同在于初始化上,一起来看一下: defaultdict 主要用来需要对 value 做初始化的情形.对于字典来说,key 必须是 hashable,immutable,unique 的数据,而 value 可以是任意的数据类型.如果 value 是 list,dict 等数据类型,在使用之前必须初始化为空,有些情况需要把 value 初始化为特殊值,比如 0 或者 ''. from c

Python的collections模块中namedtuple结构使用示例

namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较像 C 语言中 struct.一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 index 访问,没有明确的称呼,而 namedtuple 就是事先把这些 item 命名,以后可以方便访问. ? 1 2 3 4 5 6 7 8 9 10 11

Python中Collections模块的Counter容器类使用教程

1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排序字典,是字典的子类.引入自2.7.namedtuple()函数:命名元组,是一个工厂函数.引入自2.6.Counter类:为hashable对象计数,是字典的子类.引入自2.7.deque:双向队列.引入自2.4.defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键.引入自2.

python的Collections 模块

Collections 模块 知识点 Counter 类 defaultdict 类 namedtuple 类 在这个实验我们会学习 Collections 模块.这个模块实现了一些很好的数据结构,它们能帮助你解决各种实际问题. >>> import collections 这是如何导入这个模块,现在我们来看看其中的一些类. 1. Counter Counter 是一个有助于 hashable 对象计数的 dict 子类.它是一个无序的集合,其中 hashable 对象的元素存储为字典的

【python】collections模块(有序字典,计数器,双向队列)

collections模块基本介绍 我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型: 1.namedtuple(): 生成可以使用名字来访问元素内容的tuple子类2.deque: 双端队列,可以快速的从另外一侧追加和推出对象3.Counter: 计数器,主要用来计数4.OrderedDict: 有序字典5.defaultdict: 带有默认值的字典 n

Python中collections模块中的Counter()类

最近在刷leetcode,发现很多题目的思路都很相似.其中,collections模块中的Counter()多次在习题中碰到,很有必要对该知识点总结一下,加深理解. 1.collections模块 collections模块自Python 2.4 版本之后,引入除了dict.list.set.tuple以外的一些特俗容器,分别是: namedtuple():factory function for creating tuple subclasses with named fields(versi

Python基础 collections模块

collections模块 collections模块在内置数据类型(dict.list.set.tuple)的基础上,还提供了几个额外的数据类型:ChainMap.Counter.deque.defaultdict.namedtuple和OrderedDict等. 1.namedtuple: 生成可以使用名字来访问元素内容的tuple子类2.deque: 双端队列,可以快速的从另外一侧追加和推出对象3.Counter: 计数器,主要用来计数4.OrderedDict: 有序字典5.defaul

Python高级数据结构-Collections模块

在Python数据类型方法精心整理,不必死记硬背,看看源码一切都有了之中,认识了python基本的数据类型和数据结构,现在认识一个高级的:Collections 这个模块对上面的数据结构做了封装,增加了一些很酷的数据结构,比如: a)Counter: 计数器,用于统计元素的数量 b)OrderDict:有序字典 c)defaultdict:值带有默认类型的字典 d)namedtuple:可命名元组,通过名字来访问元组元素 e)deque :双向队列,队列头尾都可以放,也都可以取(与单向队列对比,

Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块

主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功能的代码进行归类的结果引入模块的方式: (1) import 模块 (2) from 位置 import 模块 二. collections模块 collections模块主要封装了一些关于集合类的相关操作. 如我们学过的iterable,iterator等等.除此以外, collections还提