값 자체가 곧 구성원인 모음
집합은 해시 가능한 값을 중복 없이 담아. 빈 집합은 set()으로 만들고, {}는 빈 딕셔너리라는 점을 조심해. 순서를 계약하지 않으므로 위치로 접근하지 않아.
멤버십과 집합 연산
집합의 멤버십 검사는 평균 O(1)이라 리스트의 O(n) 검색보다 반복 확인에 유리해. 합집합, 교집합, 차집합, 대칭차집합은 연산자와 메서드 둘 다 제공하며, 부분집합·상위집합 관계도 바로 물을 수 있어.
중복 제거와 frozenset
set(items)은 중복을 없애지만 입력 순서는 잃어. 첫 등장 순서를 보존하려면 삽입 순서를 지키는 딕셔너리 키를 이용해 list(dict.fromkeys(items))로 만들어. frozenset은 바뀌지 않고 해시 가능해서 딕셔너리 키나 다른 집합의 원소가 될 수 있어.
원칙: 순서보다 “들어 있나?”와 집합 관계가 중요하면 set을 먼저 떠올려.