Programming/Python

set() - from list to set 리스트를 해시형 데이터 타입인 셋으로 변환하기

makeitworth 2021. 4. 26. 22:50

set 은 집합 자료형이다. 집합 연산을 쉽게 할 수 있다.

 

리스트를 셋으로 만들어 주면 데이터 타입이 1)해시형 데이터 타입 셋으로 바뀌면서 2)중복을 제거하고 3)정렬해준다.

l = [1,2,3,4,5,1]
ls= set(l)
ls

>> {1, 2, 3, 4, 5}

 

 

이와 같은 특징 때문에 중복을 제거하고 싶거나 정렬을 계속 해줘야 할 때 set 자료형을 활용한다.

 

 

리스트 말고 문자열도 set()으로 셋으로 만들어 줄 수 있다.

s = "Hello"
ss = set(s)
ss

>> {'H', 'e', 'l', 'o'}

 

정렬하고, 중복을 제거하는데, 대문자가 우선한다.

 

근데 리스트의 원소도 리스트면 set 변환이 되지 않고 type 에러가 난다.

ll = [[1,1],[2,1],[1,2],[3,4],[2,1],[2,1]]
ll_set = set(ll)
ll_set

>>---------------------------------------------------------------------------

TypeError Traceback (most recent call last) <ipython-input-6-7ac5cb5b356f> in <module>

          1 ll = [[1,1],[2,1],[1,2],[3,4],[2,1],[2,1]]

----> 2 ll_set = set(ll)

          3 ll_set

TypeError: unhashable type: 'list'

 

이럴 땐 원소인 리스트를 튜플로 바꾼다음 set으로 변환한다 (map()활용해서)

ll = [[1,1],[2,1],[1,2],[3,4],[2,1],[2,1]]
ll_set = set(list(map(tuple,ll)))
ll_set

>> {(1, 1), (1, 2), (2, 1), (3, 4)}