python-3.x - 如何快速从 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)]
解决方案
由于 dict 键在 Python 中是唯一的,因此您可以对内部列表使用 dict 推导,将每个内部列表转换为元组,使其可散列成为键,并将原始内部列表作为值,并输出dict 作为列表:
list({tuple(i): i for s in t for i in s}.values())
推荐阅读
- java - @@@ 中止:LIBC:参数是无效的堆地址
- lua - .ahk 脚本为 LGS 重新制作
- c# - 如何使用 GeckoFx 发布
- c# - 如何在 DropDownList 中绑定数据
- php - PHP:如何使用超过 3 个具有相同函数名称的特征?我想使用所有相同名称的函数
- selenium-webdriver - 使用 Selenium 等待 XHR 请求完成
- javascript - ie11 polyfill 根据图片源集加载背景图片
- java - 从 Google Maps API 上的多条路线中删除直线
- sip - openSips 是否单独充当媒体服务器?
- php - Facebook 分享按钮将 php 添加到 url