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