主要实践一个函数对’列表嵌套字典’、’列表嵌套列表’的去重
# -*- coding:utf-8 -*-
## 只针对不可哈希的数据结构(字典/列表/对象集合)去重
# 1 - 简要的通用方法(为了更好的操作 可以扩展的更加丰富)
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)
# 2 - 去除列表对象中 字典 的重复项
lst = [{'x':1,'y':2},{'x':1,'y':3},{'x':1,'y':2,'z':3},{'x':2,'y':2},{'x':3,'y':4}]
#【字典】不可哈希 故而转义成可哈希的对象tuple
result1 = list(dedupe(lst,key=lambda x:(x['x'],x['y'],x['z'] if 'z' in x else 0))) # 根据对象的属性 来 去除重复项
print(result1)
# 3 - 去除列表对象中 列表 的重复项
lst = [[1],[2],[3],[1],[3],[4]]
#【列表】不可哈希 故而转义成可哈希的对象tuple
result2 = list(dedupe(lst,key=lambda x:tuple(x)))
print(result2)
本文介绍了一种针对不可哈希数据结构(如字典和列表)进行去重的方法,并通过具体实例展示了如何去除列表中嵌套字典及列表的重复项。
775

被折叠的 条评论
为什么被折叠?



