我有一个很大的二维列表,其中一些子列表中有重复项。我想返回 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))]
按照建议使用
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]]
。列表的顺序是任意的。