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
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])
>>>
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.
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]
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