Python序列删除重复数据
## 对于列表来说,若不保持原有顺序,可以直接转换为set删除重复数据
nums = [1,2,32,2,2,4,3,2,3,42]
nums = list(set(nums))
print(nums)
# [32, 1, 2, 3, 4, 42] # 删除了重复数据,但是原有顺序也改变了
## 删除数据并保持原有顺序
def dedupe(items, key=None):
"""
items: 哈希或者不可哈希的序列
key: 若items为不可哈希的序列(dict等)则需要指定一个函数
"""
seen = set()
for item in items:
val = item if key is None else key(item)
if val not in seen:
yield item
seen.add(val) nums = [1,2,32,2,2,4,3,2,3,42]
print(list(dedupe(nums)))
# [1, 2, 32, 4, 3, 42] students = [
{"name": "Stanley", "score": 88},
{"name": "Lily", "score": 92},
{"name": "Bob", "score": 91},
{"name": "Well", "score": 80},
{"name": "Bob", "score": 90},
{"name": "Peter", "score": 80}
]
deduped_students = list(dedupe(students, key=lambda s: s['name']))
print(deduped_students)
"""
[{'name': 'Stanley', 'score': 88},
{'name': 'Lily', 'score': 92},
{'name': 'Bob', 'score': 91},
{'name': 'Well', 'score': 80},
{'name': 'Peter', 'score': 80}] # 删除了相同姓名的元素
"""
# 删除姓名和分数都相同的元素
deduped_students = list(dedupe(students, key=lambda s: (s['name'], s['score'])))
参考资料:
Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly).
Python序列删除重复数据的更多相关文章
- sql查询删除重复数据
数据库UserInfo 删除重复数据 即删除重复的用户名手机号 同一个用户名手机号只保留一个用户 01.根据多个字段查询重复数据 with data1 as( select MobilePhone,N ...
- MYSQL删除重复数据
delete from co_jobinformation cwhere c.name in (select cc.name from co_jobinformation cc group by ...
- 取两个DataTable的交集,删除重复数据
/// <summary> /// 取两个DataTable的交集,删除重复数据 /// </summary> /// <param name="sourceD ...
- MSSQL如何在没有主键的表中删除重复数据
为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据: create database testdb use testdb ; go create table DupsNoP ...
- sql 删除重复数据且保留其中一条 用sql 关键字:with ROW_NUMBER
--1.建立表:Coursecreate table Course( ID int identity(1,1),--ID Student varchar(20) ,--学生 Sub varchar(2 ...
- mysql 删除重复数据,并保存最新一条数据
删除重复行 DELETE FROM ecm_member_login_session WHERE (number , client_code) IN ( ) AND update_time NOT I ...
- SQL语句删除重复数据
1.如表中没有主键,先添加自动增长主键 alter table 表名 add 列名 int identity (1,1) primary key 2.删除重复数据 delete from 表名 whe ...
- MySQL中删除重复数据的简单方法,mysql删除重复数据
MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式, ...
- Mysql开发技巧之删除重复数据
Mysql利用联表查询和分组来删除重复数据 //删除表中重复的id,保留最大的id mysql> select * from user; +----+------+ | id | name | ...
随机推荐
- k-近邻算法(kNN)
1.算法工作原理 存在一个训练样本集,我们知道样本集中的每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应特征进行比较,然后算法提取样本集中特征最相似的数据( ...
- eclipse 误删文件的恢复,代码的恢复
误删除文件的恢复 在用eclipse进行代码编写操作时,有时会误删除文件或者文件包.通过eclipse的恢复文件功能可以恢复误删除的文件. 具体步骤为: 1.选择误删除文件在eclipse所在包(文件 ...
- selenium(2.4.0)中不能导出web drive 代码
最近在学习selenium.要做web自动化测试.咱只会C# .就想了,这个测试用例要是能用C# 控制,保存起来,就可以以后自动运行了,不用每次点击运行了. 看了看它的文档,就开始试验了,录脚本折腾了 ...
- Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别? 线程的sleep()方法和yield()方法有什么区别?
Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别? sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间 ...
- geth访问公有链
同步以太坊,配置rpc地址 mkdir /opt/blockchain nohup geth --syncmode "fast" --cache=1024 --maxpeers 3 ...
- 【Leetcode】【Easy】Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...
- AWS的登录认证。。。
Hello, I’m sorry for any concern regarding the $1.00 Authorization that you see associated with your ...
- expdp指定时间戳导出防止数据不一致
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=“TO_TIMESTAMP(’25-08-2004 14:35:00’,’ ...
- Git软件的学习
第一部分:我的git地址是https://github.com/ZHU19007/gitLearning 第二部分:我对git的认识 一.Git是一款免费.开源的分布式版本控制工具.而Github是用 ...
- POJ 3070 矩阵快速幂
题意:求菲波那切数列的第n项. 分析:矩阵快速幂. 右边的矩阵为a0 ,a1,,, 然后求乘一次,就进一位,求第n项,就是矩阵的n次方后,再乘以b矩阵后的第一行的第一列. #include <c ...