CodeWalk

Python 中的列表去重方法

作者:古法程序员 · 2026-05-30 12:55

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