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)])
4.defaultdict 带有默认值(None)的字典
为什么要有一个带有默认值的字典。因为当我使用普通的字典时,用法一般是dict={},添加元素的只需要dict[element] =value即,调用的时候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就会报错。
defaultdict就能排上用场了,defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值,这个默认值依赖于构造参数。
int=>0
str=>""
set=>set()
list=>[]......
from collections import defaultdict dict1 = defaultdict(int)
print(dict1[1])
#结果是0
# 利用defaultdict给列表去重, 非原序
def string_duplicate_3(self, s):
# 按照之前的顺序
from collections import defaultdict
a = defaultdict()
for x in s:
a[x] = 0
return a.keys()
python之collections模块(OrderDict,defaultdict)的更多相关文章
- Python中collections模块
目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...
- 转载:Python中collections模块
转载自:Python中collections模块 目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque Ch ...
- Python的collections模块中namedtuple结构使用示例
namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较 ...
- python:collections模块
Counter类 介绍:A counter tool is provided to support convenient and rapid tallies 构造:class collections. ...
- Python中collections模块的使用
本文将详细讲解collections模块中的所有类,和每个类中的方法,从源码和性能的角度剖析. 一个模块主要用来干嘛,有哪些类可以使用,看__init__.py就知道 '''This module i ...
- python 之 Collections模块
官方文档:https://yiyibooks.cn/xx/python_352/library/collections.html 参考: https://blog.csdn.net/songfreem ...
- python的Collections 模块
Collections 模块 知识点 Counter 类 defaultdict 类 namedtuple 类 在这个实验我们会学习 Collections 模块.这个模块实现了一些很好的数据结构,它 ...
- 【python】collections模块(有序字典,计数器,双向队列)
collections模块基本介绍 我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上 ...
- Python中Collections模块的Counter容器类使用教程
1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类 ...
随机推荐
- nginx 转发tcp连接
背景:公司有一套工作流服务(jira,confluence,bitbucket),目前jira,confluence配置的是从nginx网关进行转发,bitbucket配置的是直接解析到该主机,现在计 ...
- Python基础总结之第八天开始【while循环以及for循环,循环嵌套等循环相关的知识点】(新手可相互督促)
ennnnn,年薪20万的梦想是不是又进了一步: 循环,什么是循环,循环就是电池有电,手机屏幕可以循环一整天的使用:循环就是地球不毁灭,太阳日复一日的出现...... 不接受反驳,谢谢!~ 只要条件满 ...
- cs3动画
css3 3d学习心得 卡片反转 魔方 banner图 首先我们要学习好css3 3d一定要有一定的立体感 通过这个图片应该清楚的了解到了x轴 y轴 z轴是什么概念了. 首先先给大家看一个小例子: 卡 ...
- layui upload 在JS动态加载内容后, 点击按钮无反应
/** * 根据用户选择的不同规格选项 * 返回 不同的输入框选项 */ function ajaxGetSpecInput2(spec_arr) { var goods_id = $('#goods ...
- luogu P4762 [CERC2014]Virus synthesis (回文自动机)
大意: 初始有一个空串, 操作(1)在开头或末尾添加一个字符. 操作(2)在开头或末尾添加该串的逆串. 求得到串$S$所需最少操作数. 显然最后一定是由某个偶回文通过添加字符得到的, 那么只需要求出所 ...
- .Net C# interface使用
using System; using System.ServiceModel; namespace com._80community.unittest.Demo { public delegate ...
- Git FLS的使用
克隆git地址后,一些文件内容被隐藏. 显示如下: version https://git-lfs.github.com/spec/v1oid sha256:xxxxxxxxxxxxxxxxxxxxx ...
- 【原创】大叔经验分享(83)impala执行多个select distinct
impala在一个select中执行多个count distinct时会报错,比如执行 select key, count(distinct column_a), count(distinct col ...
- gogs 搭建
sudo apt-get install nginx sudo apt-get install git sudo apt-get install mysql-server mysql -u root ...
- FFmpeg里面的时间单位
pts单位:1/90 ms(每个单位代表1/90 ms) RTP包头有个STAMP 对于视频 STAMP/90 就是 PTS (毫秒) 对于音频 STAMP/samplerate * 1000 才是 ...