Python 字典组成的数组怎么进行去重?
2023-02-19 12:24:15 时间
你知道吗?如果数组是字典组成的,直接对数组内的字典采用set的方式进行去重,会报错:
因为使用set去重的前提是该对象为不可变对象,而字典是可变对象,因此无法直接使用该方法去重。
那么怎么解决这个问题呢?有三个办法。
1.使用reduce方法
reduce() 函数会对参数序列中元素进行累积。
比如:
上述写法也能用lambda函数简化为:
因此,我们自己编写一个函数进行数组内的字典去重:
稍显复杂,如果使用reduce函数和lambda函数,代码能简化很多:
当然, 我也能一行写完这个功能:
只不过有可能会被打死在工位上,所以不建议这么干。
2.奇怪的技巧
就如文章开头提到的,字典之所以不能用set去重,是因为它是可变对象。
但是...如果我们把它变成不可变对象呢?
没错,这能成。
- 遍历字典,将每个子项变成字符串存放到数组中,再通过set函数去重。
- 通过eval函数,将去重后的数组里的每个子项重新转化回字典。
如此Python,怎能不好玩?
- 高效的方式
上面讲了两种骚操作,其实都不太建议在实际工作中使用。
一个原因是真的太骚了,怕被打趴在工位上。
另一个原因是,它们在应对较大数据量的时候,性能不太行。
下面是最正统的方式:
其实和第二种方式一样,是将数组内的每个字典转成元组,也就是不可变对象,再使用set进行去重。去重完毕后再使用dict函数将元组重新组成字典对。
但是,这种方法对于字典内还有字典的数据结构是不适用的,因此对于字典对里还有字典情况的去重,比如:
这种情况我建议使用第二种方式去重:
怎么样,这三种方式你都学会了吗?
本文转载自微信公众号「Python实用宝典」,可以通过以下二维码关注。转载本文请联系Python实用宝典公众号。
相关文章
- 基于Python的人脸识别考勤监控
- Python答题游戏
- Python调用百度API实现图像识别
- Python全栈疫情分析项目
- Python-基础-if语句快速入门
- Python-基础-循环语句快速入门
- Python-GUI签名
- 【2】VScode 搭建python和tensorflow环境
- python 简易时钟
- 【1】windows系统如何安装后缀是whl的python库
- 【2】超级详细Python-matplotlib画图,手把手教你画图!(线条颜色、大小、线形、标签)
- 【4】python读写文件操作---详细讲解!
- 【2】Anaconda下:ipython文件的打开方式,Jupyter Notebook中运行.py文件,快速打开ipython文件的方法!
- 【编写环境一】遇到常见python函数处理方式
- 【编写环境二】python库scipy.stats各种分布函数生成、以及随机数生成【泊松分布、正态分布等】
- Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图
- 强化学习技巧三:Python多进程
- 强化学习技巧五:numba提速python程序
- 【7】python_matplotlib 输出(保存)矢量图方法;画图时图例说明(legend)放到图像外侧;Python_matplotlib图例放在外侧保存时显示不完整问题解决
- 【8】python_matplotlib改变横坐标和纵坐标上的刻度(ticks)、sagemath-list_plot()调整图例(legend)中点的数量、Matplotlib画各种论文图