『Python CoolBook:Collections』数据结构和算法_容器型value字典&顺序字典
一、collections.defaultdict:多值映射字典
defaultdict省去了初始化容器的过程,会默认value对象为指定类型的容器
指定list时可以使用.append,
from collections import defaultdict d = defaultdict(list) d['a'].append(1)
d
defaultdict(list, {'a': [1]})
指定set时可以使用.add,
d = defaultdict(set) d['a'].add(1)
d['a'].add(1)
d
defaultdict(set, {'a': {1}})
原字典可以使用.setdefault方法指定value为容器,但是不太推荐,如下,
d = {}
d.setdefault('a', []).append(1)
d.setdefault('a', []).append(2)
d.setdefault('b', []).append(3)
d.setdefault('c', {1,2,3}) #默认的dict对象没有add方法,非使用append也不行
# 由于默认的方法中每次添加新的元素都要创建新的空对象[],所以不推荐
d
{'a': [1, 2], 'b': [3], 'c': {1, 2, 3}}
顺便,字典的内容是key值,
'a' in d # 字典in的是key
True
二、collections.OrderedDict:含序字典
OrderedDict内部维护着一个双向链表用于记录键值插入的顺序,更新键值不会影响原有顺序,插入键值会插入在末尾,所以其内存消耗为普通字典的两倍,
from collections import OrderedDict d = OrderedDict()
d['a'] = 1
d['c'] = 3
d['b'] = 2
print(d, d.items())
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
odict_items([('a', 1), ('c', 3), ('b', 2)])
含序字典实际上常和json连用,用于输出信息,
import json
# 对字典进行编码,使用OrderdDict可以控制字段顺序 json.dumps(d)
'{"a": 1, "c": 3, "b": 2}'
『Python CoolBook:Collections』数据结构和算法_容器型value字典&顺序字典的更多相关文章
- 『Python CoolBook:Collections』数据结构和算法_collections.deque队列&yield应用
一.collections.deque队列 deque(maxlen=N)构造函数会新建一个固定大小的队列.当新的元素加入并且这个队列已满的时候,最老的元素会自动被移除掉. 如果你不设置最大队列大小, ...
- 『Python CoolBook』数据结构和算法_多变量赋值&“*”的两种用法
多变量赋值 a = [1,2,(3,4)] b,c,d = a print(b,c,d) b,c,(d,e) = a print(b,c,d,e) 1 2 (3, 4) 1 2 3 4 a = &qu ...
- 『Python CoolBook』数据结构和算法_字典比较&字典和集合
一.字典元素排序 dict.keys(),dict.values(),dict.items() 结合max.min.sorted.zip进行排序是个很好的办法,另外注意不使用zip时,字典的lambd ...
- 【python cookbook】【数据结构与算法】13.通过公共键对字典列表排序
问题:想根据一个或多个字典中的值来对列表排序 解决方案:利用operator模块中的itemgetter()函数对这类结构进行排序是非常简单的. # Sort a list of a dicts on ...
- 『Python CoolBook』Cython
github地址 使用Cython导入库的话,需要一下几个文件: .c:C函数源码 .h:C函数头 .pxd:Cython函数头 .pyx:包装函数 setup.py:python 本节示例.c和.h ...
- 『Python基础-10』字典
# 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...
- 『Python基础-1 』 编程语言Python的基础背景知识
#『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...
- 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)
# 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
随机推荐
- Java+selenium如何清理浏览器Cookie
一.场景:在未注销系统切换不同账号登录系统下,登录会有浏览器缓存,导致登录时间异常缓慢.跟开发浏览器缓存处理机制有关系. 二.解决方法: 获取浏览器Cookie,在Login方法前增加清除缓存的代码. ...
- 从零开始一起学习SLAM | 给点云加个滤网
对VSLAM和三维重建感兴趣的在计算机视觉life"公众号菜单栏回复"三维视觉"进交流群. 小白:师兄,上次你讲了点云拼接后,我回去费了不少时间研究,终于得到了和你给的参 ...
- 解救小哈——bfs广搜
问题描述: 小哈去玩迷宫,结果迷路了,小哼去救小哈.迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 问题:帮小哼找到一条从迷宫的起点通往小哈所在位置的最短路径 ...
- spring boot 配置多数据源
https://www.jianshu.com/p/b2e53a2521fc
- 用HTML+CSS实现一个计科院网站首页静态页面
链接:https://pan.baidu.com/s/1akwyc89q3nzKDQQulaFelQ 提取码:s6ys
- idea 编译报错 未结束的字符串字面值,非法的类型开始
1.修改编码 全局编码设置: File -> Other Settings -> Default Settings->file encoding 工程编码设置: File -> ...
- 传值与传引用(C++)
reference(引用) 是C++对C的一个扩充 int a; int &b = a;//声明b是一个整形的引用变量 C语言,函数的参数传递有2种形式:传值方式调用和传引用方式调用 传值方式 ...
- Docker OpenvSwitch 应用部署
Docker OpenvSwitch 应用部署 安装部署OVS并建立GRE隧道 节点1:192.168.1.198 容器网段:172.17.1.0/24 节点2:192.168.1.199 容器网段: ...
- Python 缓存服务
缓存服务:mongodb.redis.memcache mongodb:早期的缓存系统,直接持久话,数据即存内存也同步到硬盘. redis:主流缓存系统,半持久化,默认存在内存,需要手动调用存在硬盘, ...
- spool例子
set head offset echo offset feed offset heads offset pages 50000SET NEWPAGE NONEcolumn yesterday new ...