Creating a dictionary where the key is an integer and the value is the length of a random sentence
<p>Super new to to python here, I've been struggling with this code for a while now. Basically the function returns a dictionary with the integers as keys and the values are all the words where the length of the word corresponds with each key.</p>

<p>So far I'm able to create a dictionary where the values are the total number of each word but not the actual words themselves.</p>

<p>So passing the following text</p>

<pre><code>"the faith that he had had had had an affect on his life"
</code></pre>

<p>to the function</p>

<pre><code>def get_word_len_dict(text):
    result_dict = {'1':0, '2':0, '3':0, '4':0, '5':0, '6' :0}
    for word in text.split():
        if str(len(word)) in result_dict:
            result_dict[str(len(word))] += 1
    return result_dict
</code></pre>

<p>returns</p>

<pre class="lang-none prettyprint-override"><code>1 - 0
2 - 3
3 - 6
4 - 2
5 - 1
6 - 1
</code></pre>

<p>Where I need the output to be:</p>

<pre class="lang-none prettyprint-override"><code>2 - ['an', 'he', 'on']
3 - ['had', 'his', 'the']
4 - ['life', 'that']
5 - ['faith']
6 - ['affect']
</code></pre>

<p>I think I need to have to return the values as a list. But I'm not sure how to approach it.</p>

<p>Fixing Sabian's answer so that duplicates aren't added to the list:</p>

<pre><code>def get_word_len_dict(text):
    result_dict = {1:[], 2:[], 3:[], 4:[], 5:[], 6 :[]}
    for word in text.split():
        n = len(word)
        if n in result_dict and word not in result_dict[n]:
            result_dict[n].append(word)
    return result_dict
</code></pre>

python list python-3.x dictionary