How to get an arbitrary element from a frozenset?
If you know that there is but one element in the frozenset, you can use iterable unpacking:
s = frozenset(['a'])
x, = s
This is somewhat a special case of the original question, but it comes in handy some times.
If you have a lot of these to do it might be faster than next(iter..:
>>> timeit.timeit('a,b = foo', setup='foo = frozenset(range(2))', number=100000000)
5.054765939712524
>>> timeit.timeit('a = next(iter(foo))', setup='foo = frozenset(range(2))', number=100000000)
11.258678197860718
(Summarizing the answers given in the comments)
Your method is as good as any, with the caveat that, from Python 2.6, you should be using next(iter(s))
rather than iter(s).next()
.
If you want a random element rather than an arbitrary one, use the following:
import random
random.sample(s, 1)[0]
Here are a couple of examples demonstrating the difference between those two:
>>> s = frozenset("kapow")
>>> [next(iter(s)) for _ in range(10)]
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> import random
>>> [random.sample(s, 1)[0] for _ in range(10)]
['w', 'a', 'o', 'o', 'w', 'o', 'k', 'k', 'p', 'k']