저는 파이썬으로 세트를 만들려고합니다. 어떻게해야할지 모르겠어요.
빈 세트로 시작 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!