python中dict()的高级用法实现
作者:小白的进阶 发布时间:2022-06-16 23:24:29
collections中defaultdict的用法
一、字典的键映射多个值
将下面的列表转换成字典
一个字典就是一个键对应一个单值得映射,而上面的列表中有相同的键,如果你想要一个键映射多个值,那么就需要将这多个值放到另外的序列中,比如list或者set里面,像下面这样:
你可以很方便的使用 collections 模块中的 defaultdict 来构造这样的字典。
defaultdict 的一个特征是它会自动初始化每个 key 刚开始对应的值。
当然这个默认的容器不一定是 list, 也可以是集合 set。 根据自己的需求选择使用 list 还是 set 。如果你想保持元素的插入顺序就应该使用列表,如果想去掉重复元素就是用集合。
二、统计字典中某个值出现的次数
现在有一个列表,列表中有很多字典,需要统计字典中相同的键对应的值得和
利用defaultdict 设置默认值的方法 defaultdict(int) ,代码如下:
collections 创建有序字典
字典dict是无序的,如果我们想要有序的字典,可以使用 OrderedDict,示例如下:
OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。每次当一个新的元素插入进来的时候,它会被放到链表的尾部,对于一个已经存在的键的重复赋值不会改变键的顺序。
需要注意的是,一个 OrderedDict 的大小是一个普通字典的两倍,因为它内部维护着另外一个链表,所以如果你需要构建一个需要大量 OrderedDict 实例的数据结构的时候(比如读取100,000行CSV数据到一个 OrderedDict 列表中),那么你就得仔细权衡一下是否使用 OrderedDIict 带来的好处要大过于额外内存消耗的影响。
改变key-value的顺序
OrderedDict 是有序的字典,同时也能改变其顺序,比如我们想要改变有序的 OrderedDict 对象的key-value 顺序,可以使用 move_to_end(key), 还是以上面创建的有序字典为例子
可以看到之前排在第一位的 bar 被移到最后一位了,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
字典排序
利用python 内置函数 sorted 对字典的键或者值进行排序,首先来了解下sorted 函数
sorted(iterable, key=None, reverse=False)
参数说明:
iterable -- 可迭代对象
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
按照key进行排序
理解了 sorted 函数就好办了,代码如下:
按照value进行排序
代码如下:
注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。
通过某个关键字排序一个字典列表
假设你有一个字典列表,如下:
你想根据某个或某几个字典字段来排序这个列表。
通过使用 operator 模块的itemgetter函数,可以非常容易地排序这样的数据结构,代码如下:
itemgetter() 函数也支持多个 keys,比如下面的代码:
来源:https://blog.csdn.net/laobai1015/article/details/103036066


猜你喜欢
- 先吐槽一下opencv 3.1.0的版本cv2.sift和surf就不能用了 看解释是说 什么 "non-free",,
- 上一篇文章中我们介绍了 python 语言的几个特点,并在最后留了一个问题,python 除了上下执行以外有没有其他的执行方式。今天我们就来
- 作业备份,不是备份数据库,是备份作业。 我的方法是把作业导出成文件备份起来,因为当你服务器维护的多了的时候很多你的作业 就很成问题,很麻烦。
- 一,mnist数据集形如上图的数字手写体就是mnist数据集。二,GAN原理(生成对抗网络)GAN网络一共由两部分组成:一个是伪造器(Gen
- 在上篇文章中,讲解了MongoDB的基本操作,包括增、删、改、查,但是这些操作都是在命令行模式下进行的,这篇文章中讲解如何使用C#程序连接到
- 本文实例讲述了Python实现将数据写入netCDF4中的方法。分享给大家供大家参考,具体如下:nc文件为处理气象数据文件。用户可以去htt
- 从初学 django 到现在(记得那时最新版本是 1.8,本文发布时已经发展到 3.1 了),开发环境一直都是使用从官方文档或者别的教程中学
- 圣诞节快到了,想着用python、r来画画圣诞树玩,就在网络上各种找方法,不喜勿喷哈~~Python1、import turtlescree
- 关于浅拷贝和深拷贝想必大家在学习中遇到很多次,这也是面试中常常被问到的问题,借由这个时间,整理一下浅拷贝和深拷贝的关系先从一个简单的例子入手
- 变量(Variable)可以看成一个小箱子,专门用来“盛装”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。
- 本文记录了PyCharm安装的图文教程,供大家参考,具体内容如下PyCharm的官网 1.在官网下载安装包2.选择Windows系
- 刚才画散点图要用到图例,可是matplotlib.pyplot.plot(x,y,'.')画出的散点图中图例是两个点(因为p
- 其实老早之前就已经做完了,这次稍微改进一下浏览地址:http://www.healdream.com/upload/html/autocli
- 在使用aiohttp结合apscheduler的AsyncIOScheduler模拟定点并发的时候遇到两个问题在调度器scheduler.s
- 前言判断文件是否存在在实际应用中用的非常多,下面我们来归纳一下检查文件、文件夹是否存在的各种操作一.检查文件夹/文件是否存在1. os.pa
- mysql安装目录使用MySQL AB's Linux RPM分发进行安装后,将在以下系统目录产生文件目录目录内容/usr/bin客
- 本文实例为大家分享了python实现按首字母分类查找的具体代码,供大家参考,具体内容如下要求:1.自己查找一些英文词汇,存储到某个容器类中2
- 前言Python 一直以来被大家所诟病的一点就是执行速度慢,但不可否认的是 Python 依然是我们学习和工作中的一大利器。因此,我们对 P
- 下面是具体的步骤,试用于pycharm2016(亲测)1. File-->settings-->editor--&g
- It's well-known.Microsoft SQL Server 7.0增加了一个语句top,可以限制返回的记录数。但是在使