一、 collections 中 defaultdict 的使用

1.一个字典映射多个值:

待处理字典:

l = [(‘a’,2),(‘b’,3),(‘a’,1),(‘b’,4),(‘a’,3),(‘a’,1),(‘b’,3)]

不用defaultdict时需要给字典的value设置默认值(防止key对应的value不存在):

l = [('a',2),('b',3),('a',1),('b',4),('a',3),('a',1),('b',3)]

d = {}

for key,value in l:

# setdefault()方法用于获取指定key对应的value

# 如果该key不存在,则先将该key对应的value设置为默认值:[]

d.setdefault(key,[]).append(value)

print(d)

print(list(d.items()))

运行结果:

{‘a’: [2, 1, 3, 1], ‘b’: [3, 4, 3]}

[(‘a’, [2, 1, 3, 1]), (‘b’, [3, 4, 3])]

有了defaultdict后,方便了很多:

l = [('a',2),('b',3),('a',1),('b',4),('a',3),('a',1),('b',3)]

from collections import defaultdict

# 创建defaultdict,设置由list()函数来生成默认值

d1 = defaultdict(list)

for key,value in l:

# 直接访问defaultdict中指定key对应的value即可。

# 如果该key不存在,defaultdict会自动为该key生成默认值

d1[key].append(value)

print(d1)

运行结果:

defaultdict(, {‘a’: [2, 1, 3, 1], ‘b’: [3, 4, 3]})

2.统计字典中某个值出现的总和

列表中有很多字典,需要统计字典中相同的键对应的值的和

利用 defaultdict 设置默认值的方法 defaultdict(int)

from collections import defaultdict

d = defaultdict(int)

#以下四个key-value,对应本人大学期间考的四六级分数=_=

score = [{'cet4':547},{'cet6':450},{'cet6':464},{'cet6':437},{'cet6':445}]

for s in score:

for key,value in s.items():

d[key] += value

print(d)

运行结果:

defaultdict(, {‘cet4’: 547, ‘cet6’: 1796})

同理,统计字典中某个值出现的次数

from collections import defaultdict

d = defaultdict(int)

#以下四个key-value,对应本人大学期间考的四六级分数=_=

score = [{'cet4':547},{'cet6':450},{'cet6':464},{'cet6':437},{'cet6':445}]

for s in score:

for key,value in s.items():

d[key] += 1

print(d)

运行结果:

defaultdict(, {‘cet4’: 1, ‘cet6’: 4})

二、collections 创建有序字典

字典dict是无序的,如果我们想要有序的dict,可以使用OrdereDict

OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。每次当一个新的元素插入进来的时候,它会被放到链表的尾部。对于一个已经存在的键的重复赋值不会改变键的顺序。

需要注意的是,一个 OrderedDict 的大小是一个普通字典的两倍,因为它内部维护着另外一个链表。

改变 key-value 的顺序

move_to_end 还接收一个关键字参数 last。last 默认为True,当 last = False 的时候,表示将该键移动到最前面。

删除 key_value

如果我们要删除有序字典中的 key-value, 可以使用 popitem 方法, popitem(last=True) 按照先进后出的顺序删除 dict中的key-value,popitem(last=False) 按照先进先出的规则删除 dict 中的 key-value。

三、字典排序

1.按照key进行排序

2.按照value进行排序

四、通过某个关键字排序一个字典列表

from operator import itemgetter

通过使用operator模块的 itemgetter函数实现

python字典高级用法_Python 字典的高级用法相关推荐

  1. python字典实现原理_Python字典底层实现原理详解

    在Python中,字典是通过散列表或说哈希表实现的.字典也被称为关联数组,还称为哈希数组等.也就是说,字典也是一个数组,但数组的索引是键经过哈希函数处理后得到的散列值.哈希函数的目的是使键均匀地分布在 ...

  2. python字典定义方式_Python字典常用方法及汇总

    字典的概念 字典是"键值对"的无序可变序列,字典中的每个元素都是一个"键值对",包含:"键对象"和"值对象".可以通过& ...

  3. python字典去重合并_Python字典及基本操作(超级详细)

    Python字典及基本操作(超级详细) 收录于话题#Python入门27个 今天小张帮大家简单介绍下Python的一种数据结构: 字典,字典是 Python 提供的一种常用的数据结构,它用于存放具有映 ...

  4. python中采用字典建立统_Python字典的基本使用

    本文首发于公众号「猿天罡」,转载请注明出处,谢谢. 前言 相比于列表,字典是更为灵活的一种数据结构.它能将相关信息关联起来,本文中我们一起来学习Python字典的基本用法,即如何添加.访问.修改和删除 ...

  5. python字典经典例题_python 字典(Dictionary)的一些内置函数和经典例题

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 修改字典 向字典添加新 ...

  6. python中的字典推导式_python 字典推导式(经典代码)(22)

    文章首发微信公众号,微信搜索:猿说python 在昨天的文章中,我们介绍了关于字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要 ...

  7. 用来处理python字典的方法_python字典的常用方法总结

    python中字典是非常常用的数据类型,了解各种方法的作用及优缺点对于字典的使用非常有用. dict.clear() 的方法用于清空所有的键值对,清空后字典变成空字典.代码示例如下: data = { ...

  8. python方向键键值_python字典键值对的添加和遍历方法

    添加键值对 首先定义一个空字典 >>> dic={} 直接对字典中不存在的key进行赋值来添加 >>> dic['name']='zhangsan' >> ...

  9. dictionary在python中什么意思_Python 字典(Dictionary)操作详解

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = { ...

最新文章

  1. java中unknown source_java中GUI编程中的unknown source问题
  2. linux脚本或关系表达,Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等...
  3. leetcode算法题--两个字符串的最小ASCII删除和★
  4. jquery动态加载JS【方法getScript】的改进
  5. 28个不得不看的经典编程算法!!
  6. fastjson和json-lib的区别
  7. python 并发编程 多进程 目录
  8. Linux 远程和本地的一些解决方案
  9. 一 c语言程序设计 张玉生版
  10. CAD中怎么将Z轴归零?CADZ轴归零教程
  11. 合同原件、传真件、扫描件法律效力解析
  12. 设计模式之里氏宗青出于蓝而胜于蓝
  13. Hadamard 积, Kronecker 积 和 Khatri- Rao积
  14. checkboxlist控件用法
  15. 乐高拉力机器人图纸_乐高MOC图纸分享:乐高MINI机器人制作教程(图文版)
  16. SpringMVC拦截器
  17. UIScrollView的重用机制的理解[转]
  18. 一种改进的鲸鱼优化算法
  19. 小灰灰的springboot的学习之路(一):在MyEclipse中创建SpringBoot项目
  20. [article][几米的画]寂寞的样子

热门文章

  1. Qt 遍历目录并删除目录下所有文件
  2. 测度论相关概念(吐)
  3. win10+anaconda3在 安装后‘conda‘ 不是内部或外部命令,也不是可运行的程序
  4. 部署虚拟服务器,把网站部署到虚拟服务器
  5. zabbix 安装_Zabbix的WEB安装与配置
  6. 电脑版企业微信_企业微信教育版功能更新啦!
  7. 原码、反码、补码、移码的表示
  8. Oracle原理:11g中的网络配置
  9. java 图像刺绣算法_图像处理:OpenCV3源代码文件解析
  10. git submodule 的使用