首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python删除序列相同的元素并保持原顺序

python删除序列相同的元素并保持原顺序

作者头像
dogfei
发布2020-07-31 11:40:26
发布2020-07-31 11:40:26
1.1K0
举报
文章被收录于专栏:devops探索devops探索

示例:

1 2 3 4 5 6 7 8 9

1、列表中有重复的元素 a = [1,5,2,1,9,1,5,10] 2、字典中有重复的键值对 a = [ {'x': 1,'y': 2}, {'x': 1,'y': 3}, {'x': 1,'y': 2}, {'x': 2,'y': 4} ]

针对这些,我们需要去重,并且还要保持原顺序不变,该如何操作呢?

这里我们使用函数来解决。

1、列表去重

1 2 3 4 5 6 7 8 9 10

def dedupe(items): seen = set() for item in items: if item not in seen: yield item seen.add(item) a = [1,5,2,1,9,1,5,10] print(list(dedupe(a)))

先看下python中set()集合的特点

  • 无序性
  • 唯一性

所以集合可以用来

  1. 去重
  2. 关系测试

yield的用法,可以参考另一篇博客:[yield][1]

2、字典去重

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

def dedupe(items,key=None): 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) a = [ {'x': 1,'y': 2}, {'x': 1,'y': 3}, {'x': 1,'y': 2}, {'x': 2,'y': 4} ] print(list(dedupe(a,key=lambda d : (d['x'],d['y']))))

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

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