[python] Python에서 집합 집합을 만들려면 어떻게해야합니까?

저는 파이썬으로 세트를 만들려고합니다. 어떻게해야할지 모르겠어요.

빈 세트로 시작 xx:

xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)

그러나 나는 얻는다

TypeError: unhashable type: 'list'

또는

TypeError: unhashable type: 'set'

파이썬에서 세트 세트를 가질 수 있습니까?

나는 대규모 세트 컬렉션을 다루고 있으며 중복 세트를 처리 할 필요가 없도록하고 싶습니다 (세트 B 세트 A1, A2, ….., An은 Ai = Aj 인 경우 두 세트를 “취소”합니다).



답변

파이썬은 내부 set객체가 변경 가능하므로 해시 할 수 없기 때문에 불평합니다 . 해결책은 frozenset내부 세트 에 사용 하여 수정할 의도가 없음을 나타내는 것입니다.


답변

사람들은 이미 frozenset () 으로이 작업을 수행 할 수 있다고 언급 했으므로이 작업을 수행 하는 방법에 대한 코드를 추가하겠습니다.

예를 들어 다음 목록 목록에서 집합 집합을 만들 수 있습니다.

t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]

다음과 같은 방법으로 세트를 만들 수 있습니다.

t1 = set(frozenset(i) for i in t)


답변

frozenset내부에서 사용하십시오 .


답변

그래서 똑같은 문제가있었습니다. 세트로 작동하는 데이터 구조를 만들고 싶었습니다. 문제는 세트가 불변 객체 를 포함해야한다는 것 입니다. 따라서 할 수있는 일은 단순히 튜플 세트로 만드는 것입니다. 그것은 나를 위해 잘 작동했습니다!

A = set()
A.add( (2,3,4) )##adds the element
A.add( (2,3,4) )##does not add the same element
A.add( (2,3,5) )##adds the element, because it is different!


답변

2020 년부터 공식 Python 문서frozenset 는 집합 집합을 나타내는 데 사용 하도록 권장 합니다.


답변