Créer un ensemble d’ensembles en Python #
Les objets Set ne sont pas hachables, donc nous ne pouvons pas créer un ensemble de sets. Cependant, nous
pouvons créer un set
de frozensets ou une liste de listes. Les objets Set ne peuvent pas être
membre d’un autre set
car ils sont mutables et non hachables.
set_of_sets = set()
set_of_sets.add(frozenset(['bobby', 'hadz']))
set_of_sets.add(frozenset(['.', 'com']))
print(set_of_sets)
list_of_lists = [
['bobby', 'hadz'],
['.', 'com']
]
print(list_of_lists)
Le premier exemple crée un set
de frozenset
objets.
On ne peut pas utiliser un set
comme membre d’un autre set
ou comme clé dans un dictionnaire car set
les objets sont mutables et indéchiffrables.
Un moyen de contourner ce problème est d’utiliser un objet frozenset
.
set_of_sets = set()
set_of_sets.add(frozenset(['bobby', 'hadz']))
set_of_sets.add(frozenset(['.', 'com']))
print(set_of_sets)
Nous avons utilisé un frozenset
au lieu d’un set
. Le site frozenset
prend un itérable comme argument.
Un frozenset est une version immuable de la classe Python set
Python, de sorte qu’il peut être utilisé comme élément dans un autre objet set
ou comme clé dans un dictionnaire.
Vous pouvez également utiliser les tuples qui contiennent des éléments immuables comme élément d’un fichier
set
.
set_of_sets = set()
set_of_sets.add(('bobby', 'hadz'))
set_of_sets.add(('.', 'com'))
print(set_of_sets)
Les objets Tuple sont immuables et peuvent être hachés.
La plupart des objets intégrés immuables de Python sont hachables, alors que les objets mutables ne le sont pas.
ne sont pas hachables.
Si un objet est hachable, il peut être utilisé comme clé dans un dictionnaire et comme élément d’un objet set
car ces structures de données utilisent la valeur de hachage en interne.
Les objets hachables comprennent – str
, int
, bool
, tuple
, frozenset
.
Les objets inabordables comprennent – list
, dict
, set
.
Notez que tuples
et frozensets
ne sont hachables que si leurs éléments sont
hachables.
Vous pouvez également utiliser une liste de listes.
list_of_lists = [
['bobby', 'hadz'],
['.', 'com']
]
print(list_of_lists)
print(list_of_lists[0])
print(list_of_lists[0][0])
Une liste de listes est beaucoup plus facile à utiliser qu’un fichier set
de frozenset
d’objets si cela
si cela convient à votre cas d’utilisation.