Próbuję stworzyć zestaw zestawów w Pythonie. Nie wiem, jak to zrobić.
Począwszy od pustego zestawu xx
:
xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)
ale dostaję
TypeError: unhashable type: 'list'
lub
TypeError: unhashable type: 'set'
Czy można mieć zestaw zestawów w Pythonie?
Mam do czynienia z dużą kolekcją zestawów i chcę być w stanie nie mieć do czynienia z duplikatami zestawów (zestaw B zestawów A1, A2, ...., An „anulowałby” dwa zestawy, jeśli Ai = Aj)
źródło
set(map(frozenset, t))
Użyj
frozenset
wewnątrz.źródło
Więc miałem dokładnie ten sam problem. Chciałem stworzyć strukturę danych, która będzie działać jako zbiór zestawów. Problem polega na tym, że zbiory muszą zawierać niezmienne obiekty. Możesz więc po prostu utworzyć zestaw krotek. To działało dobrze dla mnie!
źródło
A.add( (4,3,2)); A.add((2,4,3)); A.add((2,3,4))
doda trzy odrębne elementy, podczas gdy oryginalne pytanie jest o „zestaw zestawów”, co oznacza, że(2,3,4)
,(4,3,2)
,(2,4,3)
są takie same.Od 2020 roku oficjalna dokumentacja Pythona zaleca używanie
frozenset
do reprezentowania zestawów zestawów.źródło