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

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

先说一下什么是数组:
数组的定义:

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

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

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

  • 1、使用set;
    arr = ['a','b','a','c','b']
    def quchong01(arr):
      return list(set(arr))
    print(quchong01(arr))
    
    多次执行以上代码,会发现输出顺序可能会不一样;
    在这里插入图片描述
  • 2、使用字典的key
    ```
    def quchong02(arr):
    a={}
    a = a.fromkeys(arr)
    return list(a)

print(quchong02(arr))

多次执行以上代码,输出是一致的

- 3、循环比较去重

def quchong03(data):
new_data = []
for i in range(len(data)):
if data[i] not in new_data:
new_data.append(data[i])
return new_data
print(quchong03(arr))

- 4、使用pandas
```python
def quchong04(data):
    import pandas as pd
    return pd.unique(data).tolist()

特殊情况:

如果数组是字典组成的,是无法直接对数组内的字典采用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函数将元组重新组成字典对。
    ```
    def quchong06(data):
    data = [dict(t) for t in set([tuple(d.items()) for d in data])]
    return data

print(quchong06(data))
```

相关文章
|
3月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
254 1
|
4月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
402 1
|
5月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
187 2
|
5月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
161 0
|
5月前
|
传感器 大数据 API
Python数字限制在指定范围内:方法与实践
在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
247 0
|
5月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
4月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
503 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
4月前
|
存储 JSON 数据管理
Python字典:高效数据管理的瑞士军刀
Python字典基于哈希表实现,提供接近O(1)的高效查找,支持增删改查、遍历、合并等丰富操作,广泛应用于计数、缓存、配置管理及JSON处理。其灵活性与性能使其成为数据处理的核心工具。
563 0
|
5月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
307 4
|
4月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
115 0

推荐镜像

更多