I want to create a dict with the occurence of the letter from a string as key and the letters which appear that many times as values.
My desired output with an example "occurence" should look like this:
{1: ['o', 'u', 'n'], 3: ['c'], 2: ['r', 'e']}
Right now it looks like this:
{1: ['o', 'u', 'n'], 3: ['c', 'c', 'c'], 2: ['r', 'r', 'e', 'e']}
My code right now:
letters = list(text)
new_dict = {}
for elements in list(text):
if letters.count(elements) not in new_dict:
new_dict[letters.count(elements)] = [elements]
else:
new_dict[letters.count(elements)].append(elements)
return new_dict
>Solution :
check if the letter is already in the dict and only if not add it:
letters = list(text) # this line is not needed
new_dict = {}
for elements in list(text): # `for elements in text:` works just fine
if letters.count(elements) not in new_dict: # text.count(...) works just like letters.count(...)
new_dict[letters.count(elements)] = [elements]
else: # can be simpified to `elif elements not in new_dict[...]:`
if elements not in new_dict[letters.count(elements)]: # check if the character is already present
new_dict[letters.count(elements)].append(elements)
return new_dict
btw. you don’t have to convert the string to list to be iterable, support membership testing (a in b) or have a count
method.
all of this also works with strings.