Python
set에 set 추가? frozenset
크레이지제이
2021. 2. 24. 13:44
반응형
파이썬으로 알고리즘 프로그래밍을 하다가 우연히 set에 set을 추가할 일이 있었다.
리스트에 리스트가 추가가 가능한 것 처럼, set도 되지 않을까??
생각해서 해보니, 안 되었다. set에는 immutable 즉, 변경불가한 데이터만 원소로 추가가 가능하였다.
따라서 set에는 set, list 등 변화가 가능한 것들이 추가가 안 된다.
정말 안되나 하다가... set을 추가할 방법을 찾았다. 그것은 frozenset.
한 줄 요약: 원소가 되는 set을 frozenset으로 캐스팅하여 사용한다!
더 이상 수정불가능한 immutable 타입으로 캐스팅하면 원소로 넣을 수 있다.
a = set()
# 리스트 추가 안됨.
a.add([1,2,3]) # TypeError: unhashable type: 'list'
# SET 도 추가 안됨.
b = set()
a.add(b) # TypeError: unhashable type: 'set'
# SET을 추가할 수 있는 방법??? FROZENSET!
a.add(frozenset(b)) # ok