반응형

파이썬으로 알고리즘 프로그래밍을 하다가 우연히 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

 

'Python' 카테고리의 다른 글

투명 배경 이미지 만들기  (0) 2023.03.22
Drawing Plot, 투명 이미지 datauri 생성  (0) 2023.03.20
Jupyter Notebook 소스 복구  (0) 2020.06.16
Docker python venv 패키지 유지  (0) 2020.06.07
딕셔너리에서 키삭제  (0) 2019.12.07

+ Recent posts