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

Vitor Bosshard algorias at gmail.com
Fri Oct 23 19:04:33 CEST 2009


2009/10/23 Willi Richert <w.richert at gmx.net>:

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 = someset.pop() someset.add(x) 2. for x in someset:  break 3. x = iter(someset).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 = someset.get()

I see this as being useful for frozensets as well, where you can't get an arbitrary element easily due to the obvious lack of .pop(). I ran into this recently, when I had a frozenset that I knew had 1 element (it was the difference between 2 other sets), but couldn't get to that element easily (get the pun?)



More information about the Python-Dev mailing list