繁体   English   中英

如何从列表列表中删除重复项

[英]How to remove duplicates from lists of lists

在社区检测期间,我试图从列表列表中删除重复节点(旨在计算 ARI)。 我所拥有的——一个列表中有几十个不同维度的列表:

lst_of_lts= [[5192, 32896, 34357, 34976, 36683, 43315], … ,[19, 92585, 94137, 98381, 99041, 100395, 101100, 109759]]

我正在运行的内容:

import itertools

Lst_of_lts.sort()

Lst_of_lts_2 = list(k for k,_ in itertools.groupby(Lst_of_lts))

Lst_of_lts_nodops= [list(i) for i in {tuple(sorted(i)) for i in Lst_of_lts_2}]

出于某种原因,它不会删除重复项。

尺寸保持不变-有什么建议吗?

还尝试了许多选项,例如:

从 Python 列表中的列表中删除重复项和删除 Python 列表中的重复列表

如果您只是在列表本身中删除重复项,则可以使用 set。

a = np.random.randint(0,5,(10,10)).tolist()

a
Out[128]: 
[[0, 3, 0, 2, 4, 4, 0, 0, 3, 3],
 [2, 4, 0, 2, 4, 2, 2, 4, 3, 1],
 [3, 2, 0, 1, 2, 0, 2, 0, 2, 1],
 [3, 1, 4, 1, 0, 1, 4, 4, 3, 4],
 [2, 0, 1, 1, 0, 4, 1, 4, 2, 3],
 [0, 0, 1, 3, 4, 3, 1, 3, 0, 1],
 [1, 2, 0, 2, 1, 3, 4, 2, 2, 0],
 [3, 3, 2, 2, 0, 4, 1, 1, 0, 0],
 [0, 1, 3, 0, 4, 4, 2, 1, 1, 4],
 [0, 1, 4, 4, 0, 1, 3, 2, 1, 1]]

[list(set(i)) for i in a]
Out[129]: 
[[0, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3],
 [0, 1, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4]]

或者如果你想保留元素的顺序,你可以使用dict.fromkeys

[list(dict.fromkeys(i)) for i in a]
Out[133]: 
[[0, 3, 2, 4],
 [2, 4, 0, 3, 1],
 [3, 2, 0, 1],
 [3, 1, 4, 0],
 [2, 0, 1, 4, 3],
 [0, 1, 3, 4],
 [1, 2, 0, 3, 4],
 [3, 2, 0, 4, 1],
 [0, 1, 3, 4, 2],
 [0, 1, 4, 3, 2]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM