Getting the member of a singleton set
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Sun May 20 19:52:54 EDT 2007
En Sun, 20 May 2007 17:27:20 -0300, Arnaud Delobelle
<arnodel at googlemail.com> escribió:
> Hi all,
>
> I often find myself needing to get (non-destructively) the value of
> the member of a singleton set. Is there a good way to do this (as an
> expression?) None of the ones I can think of satisfy me, eg:
>
> * list(myset)[0]
> * iter(myset).next()
> * set(myset).pop()
>
> What I would like is something like a 'peek()' function or method
> (would return the same as pop() but wouldn't pop anything). I would
> like to know of a better idiom if it exists. If not, isn't there a
> need for one?
Yes, something like peek() or any() would be useful. But you're not
restricted by the builtin methods, you could write your own:
def peek(iterable):
return iter(iterable).next()
maybe converting the possible StopIteration into another exception like
EmptyContainer(ValueError).
> Note: it is comparatively easier to do this destructively:
> myset.pop()
> or to bind a name to the member:
> element, = myset
If you know that your set contains exactly one element, I like the later
form.
> PS: this problem is not restricted to sets but could occur with many
> 'container' types.
Yes, and I've seen all your expressions, plus some more, like: for x in
container: break
All of them are rather ugly...
--
Gabriel Genellina
More information about the Python-list
mailing list