首页 > 解决方案 > 如何快速从 python 列表中删除重复项?

问题描述

我有一个大的嵌套列表结构:

   t = [
        [['a', 1], ['b', 2], ['c', 3]],
        [['d', 1], ['e', 2], ['f', 3]],
        [['g', 1], ['h', 2], ['i', 3]]
    ]

我想删除最内层列表的所有重复项。

此功能运行良好:

[['a', 1], ['b', 2], ['c', 3], ['d', 1], ['e', 2], ['f', 3], ['g', 1], ['i', 3]]

但是对于我的庞大列表来说非常慢。有没有更快的方法来做到这一点?

def get_unique_list(seq):
    flat_list = [item for sublist in t for item in sublist]
    seen = []
    return [x for x in flat_list if x not in seen and not seen.append(x)]

标签: python-3.xlist

解决方案


由于 dict 键在 Python 中是唯一的,因此您可以对内部列表使用 dict 推导,将每个内部列表转换为元组,使其可散列成为键,并将原始内部列表作为值,并输出dict 作为列表:

list({tuple(i): i for s in t for i in s}.values())

推荐阅读