Estoy tratando de hacer un conjunto de conjuntos en Python. No puedo entender cómo hacerlo.
Comenzando con el conjunto vacío xx
:
xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)
pero consigo
TypeError: unhashable type: 'list'
o
TypeError: unhashable type: 'set'
¿Es posible tener un conjunto de conjuntos en Python?
Estoy tratando con una gran colección de conjuntos y quiero poder no tener que tratar conjuntos duplicados (un conjunto B de conjuntos A1, A2, ...., An "cancelaría" dos conjuntos si Ai = Aj)
fuente
set(map(frozenset, t))
Usar en el
frozenset
interior.fuente
Entonces tuve exactamente el mismo problema. Quería hacer una estructura de datos que funcione como un conjunto de conjuntos. El problema es que los conjuntos deben contener objetos inmutables . Entonces, lo que puedes hacer es simplemente hacerlo como un conjunto de tuplas. ¡Eso funcionó bien para mí!
fuente
A.add( (4,3,2)); A.add((2,4,3)); A.add((2,3,4))
se sumarán tres elementos distintos, mientras que la pregunta original se trata de "conjunto de conjuntos", lo que implica que(2,3,4)
,(4,3,2)
,(2,4,3)
son los mismos.A partir de 2020, la documentación oficial de Python recomienda utilizar
frozenset
para representar conjuntos de conjuntos.fuente