[Tutor] Remove a dictionary entry
Peter Otten
__peter__ at web.de
Sun Sep 19 10:41:00 CEST 2010
Steven D'Aprano wrote:
> On Sat, 18 Sep 2010 07:13:13 pm Peter Otten wrote:
>
>> You should never iterate over a list or dictionary and add or remove
>> items to it at the same time. That is a recipe for disaster even if
>> it doesn't fail explicitly.
>
> That's a bit strong. It's quite possible to modify lists safely and
> correctly while iterating over them with a little bit of care.
You're of course not the intended audience of my advice.
> You know, for decades people were able to program in languages like C
> and Pascal and assembly, often on machines with tiny amounts of memory.
> When your machine has 64K of memory, and the OS and application uses
> half of it, you don't have the luxury of making a copy of a 20K list
> before modifying it. Back when I was a lad, we learned how to modify
> lists in place. It isn't hard. *wink*
When you do that you are usually operating on an abstraction level below
Python.
> Even in Python, it is sometimes necessary to modify lists and even dicts
> in place while iterating over them. 98% of the time, making a copy is
> faster, simpler and more efficient, but learning how to safely modify
> data structures in place is a valuable skill to have.
If you have a huge list that you can only modify in place you may have
chosen the wrong data structure.
> But I'm just talking about general principles here. In most cases, stick
> to Peter's advice to make a copy.
Hey, I can agree with that ;)
Peter
More information about the Tutor
mailing list