Oedipus Oedipus - 4 months ago 26
Python Question

How to add multiple values to a key in a python dictionary

I am trying to create a dictionary from the values in the

dictionary where the length of the list is the new key and the
dictionary key and value are the value. So:

name_num = {"Bill": [1,2,3,4], "Bob":[3,4,2], "Mary": [5, 1], "Jim":[6,17,4], "Kim": [21,54,35]}

I want to create the following dictionary:

new_dict = {4:{"Bill": [1,2,3,4]}, 3:{"Bob":[3,4,2], "Jim":[6,17,4], "Kim": [21,54,35]}, 2:{"Mary": [5, 1]}}

I've tried many variations, but this code gets me the closest:

for mykey in name_num:
new_dict[len(name_num[mykey])] = {mykey: name_num[mykey]}


new_dict = {4:{"Bill": [1,2,3,4]}, 3:{"Jim":[6,17,4]}, 2:{"Mary": [5, 1]}}

I know I need to loop through the code somehow so I can add the other values to key 3.


Dictionary, associative array or map (many names, basically the same functionality) property is that keys are unique.

The keys you wish to have, which are integers, are not unique if lengths are the same, that's why your code doesn't work. Putting a new value for existing key means replacing the old value.

You have to add key-value pairs to the existing value dictionaries.

for mykey in name_num:
    length = len(name_num[mykey])
    if length in new_dict: # key already present in new dictionary
        new_dict[length][mykey] = name_num[mykey]
        new_dict[length] = {mykey: name_num[mykey]}

should do the trick