J'essaie de créer un ensemble d'ensembles en Python. Je ne sais pas comment faire.
En commençant par l'ensemble vide xx
:
xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)
mais je reçois
TypeError: unhashable type: 'list'
ou
TypeError: unhashable type: 'set'
Est-il possible d'avoir un ensemble d'ensembles en Python?
J'ai affaire à une grande collection d'ensembles et je veux pouvoir ne pas avoir à traiter d'ensembles en double (un ensemble B d'ensembles A1, A2, ...., An "annulerait" deux ensembles si Ai = Aj)
set(map(frozenset, t))
Utilisez à l'
frozenset
intérieur.la source
J'ai donc eu exactement le même problème. Je voulais créer une structure de données qui fonctionne comme un ensemble d'ensembles. Le problème est que les ensembles doivent contenir des objets immuables . Donc, ce que vous pouvez faire, c'est simplement en faire un ensemble de tuples. Cela a bien fonctionné pour moi!
la source
A.add( (4,3,2)); A.add((2,4,3)); A.add((2,3,4))
ajoutera trois éléments distincts, alors que la question initiale est de « ensemble d'ensembles », ce qui implique que(2,3,4)
,(4,3,2)
,(2,4,3)
sont les mêmes.À partir de 2020, la documentation officielle de Python conseille d'utiliser
frozenset
pour représenter des ensembles d'ensembles.la source