Estou tentando fazer um conjunto de conjuntos em Python. Não consigo descobrir como fazê-lo.
Começando com o conjunto vazio xx
:
xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)
mas eu entendo
TypeError: unhashable type: 'list'
ou
TypeError: unhashable type: 'set'
É possível ter um conjunto de conjuntos em Python?
Estou lidando com uma grande coleção de conjuntos e quero poder não precisar lidar com conjuntos duplicados (um conjunto B dos conjuntos A1, A2, ...., e "cancelaria" dois conjuntos se Ai = Aj)
fonte
set(map(frozenset, t))
Use
frozenset
dentro.fonte
Então, eu tive exatamente o mesmo problema. Eu queria criar uma estrutura de dados que funcionasse como um conjunto de conjuntos. O problema é que os conjuntos devem conter objetos imutáveis . Então, o que você pode fazer é simplesmente fazer isso como um conjunto de tuplas. Isso funcionou bem para mim!
fonte
A.add( (4,3,2)); A.add((2,4,3)); A.add((2,3,4))
irá adicionar três elementos distintos, enquanto que a pergunta original é sobre "conjunto de conjuntos", o que implica que(2,3,4)
,(4,3,2)
,(2,4,3)
são os mesmos.A partir de 2020, a documentação oficial do Python recomenda o uso
frozenset
para representar conjuntos de conjuntos.fonte