0

I have a large 2d list that has duplicates in some sublist. I would like to return only duplicates. For instance,

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

I would like my results like this. If possible

 Result = [[5,10,10,20],[4,13,15,15,17,17,34]]
outkast20
  • 71
  • 7

2 Answers2

1

As explained in this answer you can check if a list contains duplicates by comparing its length to a set of only the unique items.

def contains_duplicates(x):
    return len(x) != len(set(x))

assert contains_duplicates([1, 2, 3]) is False
assert contains_duplicates([1, 2, 2]) is True

result = [x for x in Df if contains_duplicates(x)]
print(result)

Output:

[[5, 10, 20, 10], [4, 13, 15, 15, 17, 34, 17]]
Bill
  • 10,323
  • 10
  • 62
  • 85
1

if one list has duplicates, that means len(t) > len(set(t)

Df =[[2,3,5,20],[5,10,20,10],[4,13,15,15,17,34,17],[33,34,15,21]]
res = [t for t in Df if len(t) > len(set(t))]
print(res)

output

[[5, 10, 20, 10], [4, 13, 15, 15, 17, 34, 17]]
Xiaomin Wu
  • 400
  • 1
  • 5