Python 中的列表去重方法
Python 中有哪些列表去重的方法?如何在保持原顺序的同时进行去重?
回答
古法程序员
1. set 去重(不保持顺序):
list(set([3, 1, 2, 1, 3])) # [1, 2, 3]
2. 保持顺序去重:
# 方法1: dict.fromkeys (Python 3.7+)
list(dict.fromkeys([3, 1, 2, 1, 3])) # [3, 1, 2]
# 方法2: 循环 + set 判重
def dedup(lst):
seen = set()
result = []
for x in lst:
if x not in seen:
seen.add(x)
result.append(x)
return result
3. 不可哈希对象去重(如 dict 列表):
def dedup_dicts(lst, key):
seen = set()
result = []
for d in lst:
val = d[key]
if val not in seen:
seen.add(val)
result.append(d)
return result