How to retrieve an element from a set without removing it?


Suppose the following:

>>> s = set([1, 2, 3])

How do I get a value (any value) out of s without doing s.pop()? I want to leave the item in the set until I am sure I can remove it - something I can only be sure of after an asynchronous call to another host.

Quick and dirty:

>>> elem = s.pop()
>>> s.add(elem)

But do you know of a better way? Ideally in constant time.

2/19/2018 10:22:54 PM

Accepted Answer

Two options that don't require copying the whole set:

for e in s:
# e is now an element from s


e = next(iter(s))

But in general, sets don't support indexing or slicing.

3/11/2014 6:56:46 AM

Least code would be:

>>> s = set([1, 2, 3])
>>> list(s)[0]

Obviously this would create a new list which contains each member of the set, so not great if your set is very large.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow