Qn: Nested dictionary cleanup

Skip Montanaro skip at pobox.com
Mon Nov 3 22:20:30 CET 2003

    Colin> for key1 in dict1.keys():
    Colin>     for key2 in dict1[key1]:
    Colin>         if dict1[key1][key2] == None:
    Colin>             del dict1[key1][key2]

Should be

    for key1 in dict1.keys():
        for key2 in dict1[key1].keys():
            if dict1[key1][key2] == None:
                del dict1[key1][key2]

Note that the inner for loop explicitly calls .keys().  That creates an
explicit list.  You loop over that instead of an iterator.  Why did you
choose to call dict1.keys() but not dict1[key1].keys()?


More information about the Python-list mailing list