[Python-Dev] Retrieve an arbitrary element from a set without removing it (original) (raw)

Willi Richert w.richert at gmx.net
Fri Oct 23 11:32:45 CEST 2009


Hi,

recently I wrote an algorithm, in which very often I had to get an arbitrary element from a set without removing it.

Three possibilities came to mind:

1. x = some_set.pop() some_set.add(x)

2. for x in some_set: break

  1. x = iter(some_set).next()

Of course, the third should be the fastest. It nevertheless goes through all the iterator creation stuff, which costs some time. I wondered, why the builtin set does not provide a more direct and efficient way for retrieving some element without removing it. Is there any reason for this?

I imagine something like

x = some_set.get()

or

x = some_set.pop(False)

and am thinking about providing a patch against setobject.c (preferring the .get() solution being a stripped down pop()).

Before, I would like to know whether I have overlooked something or whether this can be done in an already existing way.

Thanks, wr



More information about the Python-Dev mailing list