for n in list(read_dictionary):
>     print(read_dictionary[n])
>     if read_dictionary[n] == '5':
>         del read_dictionary[n]

After doing this how do I save it back to the dictionary?
then i ll do this
numpy.save('loc_string_dictionary.npy', dictionary)

On Thu, May 18, 2017 at 3:05 PM, Peter Otten <__pete...@web.de> wrote:

> Michael C wrote:
>
> > I am trying to remove incorrect entries of my dictionary.
> > I have multiple keys for the same value,
> >
> > ex,
> > [111]:[5]
> > [222]:[5]
> > [333]:[5}
> >
> > and I have found out that some key:value pairs are incorrect, and the
> best
> > thing to do
> > is to delete all entries who value is 5. So this is what I am doing:
> >
> > import numpy
> > read_dictionary = numpy.load('loc_string_dictionary.npy').item()
> >
> > for n in read_dictionary:
> >     print(read_dictionary[n])
> >     if read_dictionary[n] == '5':
> >         del read_dictionary[n]
> >
> >
> > However, I get this error:
> > RuntimeError: dictionary changed size during iteration
> >
> > and I can see why.
> >
> > What's the better thing to do?
>
> You can copy the keys into a list:
>
>   for n in list(read_dictionary):
> >     print(read_dictionary[n])
> >     if read_dictionary[n] == '5':
> >         del read_dictionary[n]
>
> As the list doesn't change size during iteration there'll be no error or
> skipped key aka list item.
>
> If there are only a few items to delete build a list of keys and delete the
> dict entries in a secend pass:
>
> delenda = [k for k, v in read_dictionary.items() if v == "5"]
> for k in delenda:
>     del read_dictionary[k]
>
> If there are many items to delete or you just want to default to the most
> idiomatic solution put the pairs you want to keep into a new dict:
>
> read_dictionary = {k: v for k, v in read_dictionary.items() if v != "5"}
>
>
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to