[Python] 2차원 list에서 중복 제거하기

kikichoigo·2024년 8월 1일
post-thumbnail

파이썬 리스트의 중복을 제거하는 방법

1차원 리스트set() 을 사용하면 편리하게 중복된 요소를 제거할 수 있다.

item = [1, 2, 3, 4, 3, 2, 1]
print(set(items))
# {1, 2, 3, 4}코드를 입력하세요

이를 활용해 2차원 리스트의 중복 요소도 제거할 수 있다.

items = [[1,2], [2,1], [1,3]]

print(items)
# [[1,2], [2,1], [1,3]]
print(set(items))
# unhashable type: 'list'

itmes = list(set([tuple(set(item)) for item in items]))
print(items)
# [(1, 2), (1, 3)]

formatted = []
for item in items:
    formmatted.append(str(item[0], str[items[1])))
    
print(formatted)
# 1-2, 1-3

2차원 리스트 중복 제거 과정

items = [[1, 2], [2, 1], [1, 3]]

print(set(items[0]))
# {1, 2}

print(tuple(set(items[0])))
# (1, 2)

print([item for item in items])
# [[1, 2], [2, 1], [1, 3]]

print([set(item) for item in items])
# [{1, 2}, {1, 2}, {1, 3}]

print([tuple(set(item)) for item in items])
# [(1, 2), (1, 2), (1, 3)]

print(set([tuple(set(item)) for item in items]))
# {(1, 2), (1, 3)}

print(list(set([tuple(set(item)) for item in items]))
# [(1, 2), (1, 3)]
  1. for item in items
  • for 문을 수행해 item을 가져온다.
  • 현재값: [1, 2]
  1. set(item)
  • item을 순서없는 집합으로 만든다.
  • 현재값: {1, 2}
  1. tuple(set(item))
  • tuple은 변경할 수 없고, hashable하다는 점을 이용해 list 값을 고유한 값(tuple)으로 만든다.
  • 현재값: (1, 2)
  1. [tuple(set(item)) for item in items]
  • list comprehension의 결과로 리스트가 반환된다.
  • 현재값: [(1, 2), (1, 2), (1, 3)]
  1. set([tuple(set(item)) for item in items])
  • tuple로 이루어진 list를 set()를 이용해서 중복을 제거한다.
  • 현재값: {(1, 2), (1, 3)}
  1. list(set([tuple(set(item)) for item in items]))
  • set 타입을 list 타입으로 변환한다.
  • 최종값: [(1, 2), (1, 3)]

References

https://stackoverflow.com/questions/33423008/remove-duplicate-sets-from-lists
https://stackoverflow.com/questions/14535730/what-do-you-mean-by-hashable-in-python

0개의 댓글