web-dev-qa-db-fra.com

Comment créer un ensemble Python avec un seul élément?

Si j'ai une chaîne et que je veux créer un ensemble contenant initialement seulement cette chaîne, existe-t-il une approche plus pythonique que la suivante?

mySet = set()
mySet.add(myString)

Ce qui suit me donne un ensemble de lettres dans myString:

mySet = set(myString)
42
Thalecress

Dans les versions 2.7 et 3.x, vous pouvez utiliser:

mySet = {'abc'}
37
dstromberg

Par exemple, cette manière simple:

mySet = set([myString])
19
Anatoly Scherbakov

Pour Python2.7 + :

set_display ::=  "{" (expression_list | comprehension) "}"

Exemple:

>>> myString = 'foobar'
>>> s = {myString}
>>> s
set(['foobar'])

>>> s = {'spam'}
>>> s
set(['spam'])

Notez qu'un {} vide n'est pas une set, c'est une dict.

Aide sur set:

class set(object)
 |  set() -> new empty set object
 |  set(iterable) -> new set object

Comme vous pouvez le constater, set() attend une valeur itérable et les chaînes le sont également, de sorte que les caractères de la chaîne sont convertis en un ensemble.

Mettez la chaîne dans un caractère itérable et passez-la à set():

>>> set(('foo',))  #Tuple
set(['foo'])
>>> set(['foo'])   #list
set(['foo'])
6
Ashwini Chaudhary

set(obj) va effectuer une itération sur obj et ajouter tous les éléments uniques à l'ensemble. Puisque les chaînes sont également itérables, si vous passez une chaîne à set(), vous obtenez les lettres uniques de votre jeu. Vous pouvez d'abord mettre votre obj sur une liste:

set(["mystring"])

Cependant, ce n'est pas élégant IMO. Vous savez, même pour la création d'un dictionnaire vide, nous préférons {} à dict(). Pareil ici. Je wolud utilise la syntaxe suivante:

myset = {"mystring"}

Notez que pour les tuples, vous avez besoin d’une virgule après celle-ci:

mytuple = ("mystring",)
1
SzieberthAdam

Si l'ensemble ne risque pas non plus de changer, envisagez d'utiliser une variable frozenset:

mySet = frozenset([myString])
0
Simeon Visser