加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python cookbook(数据结构与算法)从序列中移除重复项且保持元素

发布时间:2020-12-17 07:24:09 所属栏目:Python 来源:网络整理
导读:本篇章节讲解Python从序列中移除重复项且保持元素间顺序不变的方法。供大家参考研究具体如下: 问题: 从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1、如果序列中的值时可哈希(hashable)的,可以通过使用集合和生成器解决

本篇章节讲解Python从序列中移除重复项且保持元素间顺序不变的方法。分享给大家供大家参考,具体如下:

问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变

解决方案:

1、如果序列中的值时可哈希(hashable)的,可以通过使用集合和生成器解决。

# example.py
#
# Remove duplicate entries from a sequence while keeping order
def dedupe(items):
  seen = set()
  for item in items:
    if item not in seen:
      yield item
      seen.add(item)
if __name__ == '__main__':
  a = [1,5,2,1,9,10]
  print(a)
  print(list(dedupe(a)))

运行结果:

[1,10]
[1,10]

2、如果序列时不可哈希的,想要去除重复项,需要对上述代码稍作修改:

# example2.py
#
# Remove duplicate entries from a sequence while keeping order
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)
if __name__ == '__main__':
  a = [ 
    {'x': 2,'y': 3},{'x': 1,'y': 4},{'x': 2,{'x': 10,'y': 15}
    ]
  print(a)
  print(list(dedupe(a,key=lambda a: (a['x'],a['y']))))

运行结果:

[{'x': 2,'y': 15}]
[{'x': 2,'y': 15}]

key参数的作用是指定一个函数用来将序列中的元素转化为可哈希的类型,如此可以检测重复项。

(代码摘自《Python Cookbook》)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

您可能感兴趣的文章:

  • Python cookbook(数据结构与算法)将序列分解为单独变量的方法
  • python计算一个序列的平均值的方法
  • Python过滤函数filter()使用自定义函数过滤序列实例
  • python简单判断序列是否为空的方法
  • Python序列之list和tuple常用方法以及注意事项
  • python实现获取序列中最小的几个元素
  • python中使用序列的方法
  • Python常用的内置序列结构(列表、元组、字典)学习笔记
  • Python序列操作之进阶篇
  • 浅析python中的分片与截断序列
  • Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读