在每个子列表(二维列表)中返回超过 2 个重复项

问题描述 投票:0回答:1

我有一个很大的二维列表,其中一些子列表中有重复项。我想返回 2 个或更多重复项,如果不可能的话,首先返回重复项。例如,

Df =[[2,3,5,20],[5,10,20,10],[4,13,15,15,17,34,17],[33,34,15,21][12,16,24,32,12,33,24]]

我希望我的结果是这样的:

Df2 = [[15,17,4,13,34],[12,24,16,32,33]]

我已经尝试过下面的代码,但我只想返回具有 2 个或更多重复项的重复项。

res = [t for t in Df if len(t) > len(set(t))]

python list multidimensional-array jupyter-notebook pycharm
1个回答
1
投票

按照建议使用

Counter
中的
collections
,过滤掉有两个计数 > 1 的列表并不难,如下所示:

Df =[[2,3,5,20],[5,10,20,10],[4,13,15,15,17,34,17],[33,34,15,21],[12,16,24,32,12,33,24]]

res = [list(set(t)) for t in Df if len([x for x in Counter(t).values() if x > 1]) > 1]

print(res)

这会在我的计算机上打印

[[34, 4, 13, 15, 17], [32, 33, 12, 16, 24]]
。列表的顺序是任意的。

© www.soinside.com 2019 - 2024. All rights reserved.