python

超轻量级php框架startmvc

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

更新时间:2020-05-24 13:54:01 作者:startmvc
本文实例讲述了Python从序列中移除重复项且保持元素间顺序不变的方法。分享给大家供大家

本文实例讲述了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, 1, 5, 10]
 print(a)
 print(list(dedupe(a)))

运行结果:


[1, 5, 2, 1, 9, 1, 5, 10]
[1, 5, 2, 9, 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, 'y': 3},
 {'x': 2, 'y': 3},
 {'x': 10, 'y': 15}
 ]
 print(a)
 print(list(dedupe(a, key=lambda a: (a['x'],a['y']))))

运行结果:


[{'x': 2, 'y': 3}, {'x': 1, 'y': 4}, {'x': 2, 'y': 3}, {'x': 2, 'y': 3}, {'x': 10, 'y': 15}]
[{'x': 2, 'y': 3}, {'x': 1, 'y': 4}, {'x': 10, 'y': 15}]

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

(代码摘自《Python Cookbook》)

Python cookbook 数据结构 算法 序列 移除 重复项 元素间顺序不变
相关文章

Pandas-Cookbook 时间戳处理方式

Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作

Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法

Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例

Python cookbook(数据结构与算法)从字典中提取子集的方法示例

Python cookbook(数据结构与算法)将名称映射到序列元素中的方法

Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例

Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例

Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例

Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例

Python cookbook(数据结构与算法)根据字段将记录分组操作示例

Python cookbook(数据结构与算法)筛选及提取序列中元素的方法

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

Python cookbook(数据结构与算法)对切片命名清除索引的方法

Python cookbook(数据结构与算法)将序列分解为单独变量的方法

Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例

Python cookbook(数据结构与算法)保存最后N个元素的方法

Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例

Python cookbook(数据结构与算法)实现优先级队列的方法示例

Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法