pop method question
Steven D'Aprano
steve at REMOVE.THIS.cybersource.com.au
Sat Mar 3 17:55:16 EST 2007
On Sat, 03 Mar 2007 15:56:39 -0500, Nicholas Parsons wrote:
>
> On Mar 3, 2007, at 3:49 PM, Paul Rubin wrote:
>
>> Nicholas Parsons <parsons.nicholas1 at gmail.com> writes:
>>> I was just playing around in IDLE at the interactive prompt and typed
>>> in dir({}) for the fun of it. I was quite surprised to see a pop
>>> method defined there. I mean is that a misnomer or what? From the
>>> literature, pop is supposed to be an operation defined for a stack
>>> data structure. A stack is defined to be an "ordered" list data
>>> structure. Dictionaries in Python have no order but are sequences.
>>> Now, does anyone know why the python core has this pop method
>>> implemented for a dictionary type?
>>
>> Try typing:
>>
>> help({}.pop)
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>
> Thanks, that gives a more details explanation of what the behavior is
> but doesn't answer my question above :(
Just because pop can be defined for an ordered stack doesn't mean pop
can't be generalized to other data types too.
I personally don't see that pop has any advantage, especially since the
most useful example
while some_dict:
do_something_with(some_dict.pop())
doesn't work. Instead you have to write this:
for key in some_dict.keys():
# can't iterate over the dictionary directly!
do_something_with(some_dict.pop(key))
which is hardly any saving over:
for key in some_dict.keys():
# can't iterate over the dictionary directly!
do_something_with(some_dict[key])
del some_dict[key]
To my mind, having to supply a key to dict.pop makes it rather pointless.
--
Steven.
More information about the Python-list
mailing list