[Python-Dev] Retrieve an arbitrary element from a set withoutremoving it
Steven D'Aprano
steve at pearwood.info
Fri Oct 30 03:58:16 CET 2009
On Wed, 28 Oct 2009 04:47:59 am Raymond Hettinger wrote:
> A dict.get() can be meaningfully used in a loop (because the key can
> vary). A set.get() returns the same value over and over again
> (because there is no key).
I don't believe anyone has requested those semantics. The suggested
semantics for set.get() with no arguments, as I understand them, are:
(1) it will only fail if the set is empty;
(2) it should be efficient;
(3) if you call it repeatedly on a set without modifying the set, you
will cycle through each element in turn in some unspecified arbitrary
order.
To clarify point 3, given:
x = set.get()
y = set.get()
then x and y will only be the same element if set has length one.
However, given:
x = set.get()
set.add(el)
set.remove(el)
y = set.get()
there are no guarantees about x and y being different.
I believe that the patch supplied by Willi Richart implemented these
behaviours.
http://bugs.python.org/issue7212
--
Steven D'Aprano
More information about the Python-Dev
mailing list