web-dev-qa-db-fra.com

Accéder à l'unique élément d'un ensemble

J'ai une set en Python dont je retire des éléments un par un en fonction d'une condition. Lorsque l'ensemble est laissé avec seulement 1 élément, je dois retourner cet élément. Comment accéder à cet élément de l'ensemble?

Un exemple simplifié:

S = set(range(5))
for i in range(4):
    S = S - {i}
# now S has only 1 element: 4
return ? # how should I access this element
# a lame way is the following
# for e in S:
#    return S
26
Nik

Utilisez set.pop :

>>> {1}.pop()
1
>>>

Dans votre cas, ce serait:

return S.pop()

Notez toutefois que cela supprimera l'élément de l'ensemble. Si ce n'est pas souhaitable, vous pouvez utiliser min | max :

return min(S) # 'max' would also work here

Démo:

>>> S = {1}
>>> min(S)
1
>>> S
set([1])
>>> max(S)
1
>>> S
set([1])
>>> 
25
iCodez

J'utiliserais:

e = next(iter(S))

Ceci est non destructif et fonctionne même lorsqu'il y a plus d'un élément dans l'ensemble. Mieux encore, il existe une option pour fournir une valeur par défaut e = next(iter(S), default).

Vous pouvez également utiliser le déballage:

[e] = S

La technique de décompression est probablement la méthode la plus rapide. Elle inclut une vérification des erreurs pour vous assurer que le jeu ne comporte qu'un seul membre. L'inconvénient est que ça a l'air bizarre.

26
Raymond Hettinger

Désolé, en retard à la fête. Pour accéder à un élément d'un ensemble, vous pouvez toujours le convertir en liste, puis vous pouvez utiliser l'indexation pour renvoyer la valeur souhaitée.

Dans le cas de votre exemple:

return list(S)[0]
2
J4y

Vous pouvez affecter le dernier élément à une variable en utilisant star operation.

>>> a={"fatih"}
>>> b=str(*a)
>>> b
'fatih'

Maintenant, la variable b a un string object.

Si le seul élément est un nombre, vous pouvez utiliser int():

>>> a={1}
>>> c=int(*a)
>>> c
1
0
Fatih1923