前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python知识点100篇系列(8)-字典去重复的几种方法

python知识点100篇系列(8)-字典去重复的几种方法

原创
作者头像
JQ实验室
发布2024-09-22 06:34:59
730
发布2024-09-22 06:34:59
举报
文章被收录于专栏:实用技术

先说一下什么是数组:

数组的定义:

数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.

数组中的元素是可以重复的,所以就出现了去重的需求;

在python中,字典去重的方法有很多;

  • 1、使用set;arr = 'a','b','a','c','b' def quchong01(arr): return list(set(arr)) print(quchong01(arr))多次执行以上代码,会发现输出顺序可能会不一样; a={}undefined a = a.fromkeys(arr) return list(a)

print(quchong02(arr))多次执行以上代码,输出是一致的

  • 2、使用字典的key
  • 3、循环比较去重def quchong03(data): new_data = [] for i in range(len(data)): if datai not in new_data: new_data.append(datai) return new_data print(quchong03(arr))def quchong04(data): import pandas as pd return pd.unique(data).tolist()undefined
  • 4、使用pandas

特殊情况:

如果数组是字典组成的,是无法直接对数组内的字典采用set的方式进行去重的; 因为使用 set 去重的前提是该对象为不可变对象,而字典是可变对象,因此无法直接使用该方法去重。

字典数组去除重复的方法:

  • 字典之所以不能用set去重,是因为它是可变对象。可以把它变成不可变对象data = {"a": 1}, {"a": 1}, {"a": 3}, {"b": 4} def quchong05(data): immutable_dict = set(str(item) for item in data) data = eval(i) for i in immutable_dict return data print(quchong05(data))遍历字典,将每个子项变成字符串存放到数组中,再通过set函数去重。

通过eval函数,将去重后的数组里的每个子项重新转化回字典。

  • 或者将数组内的每个字典转成元组,也就是不可变对象,再使用set进行去重。去重完毕后再使用dict函数将元组重新组成字典对。
代码语言:python
代码运行次数:0
复制
def quchong06(data):
    data = [dict(t) for t in set([tuple(d.items()) for d in data])]
    return data

print(quchong06(data))

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档