How to add multiple values to a key in a Python dictionary
<p>I am trying to create a dictionary from the values in the <code>name_num</code> dictionary where the length of the list is the new key and the <code>name_num</code> dictionary key and value are the value. So:</p>

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

<p>I want to create the following dictionary:</p>

<pre><code>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]}}
</code></pre>

<p>I've tried many variations, but this code gets me the closest:</p>

<pre><code>for mykey in name_num:
    new_dict[len(name_num[mykey])] = {mykey: name_num[mykey]}
</code></pre>

<p>Output:</p>

<pre><code>new_dict = {4:{"Bill": [1,2,3,4]}, 3:{"Jim":[6,17,4]}, 2:{"Mary": [5, 1]}}
</code></pre>

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

<p><a href="https://en.wikipedia.org/wiki/Associative_array">Dictionary</a>, associative array or map (many names, basically the same functionality) property is that keys are unique.</p>

<p>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.</p>

<p>You have to add key-value pairs to the existing value dictionaries.</p>

<pre><code>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]
    else:
        new_dict[length] = {mykey: name_num[mykey]}
</code></pre>

<p>should do the trick</p>

python dictionary