[Tutor] Remove a dictionary entry

Steven D'Aprano steve at pearwood.info
Sat Sep 18 18:06:22 CEST 2010


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 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*

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.

But I'm just talking about general principles here. In most cases, stick 
to Peter's advice to make a copy.


-- 
Steven D'Aprano


More information about the Tutor mailing list