Словарь не будет отображаться в соответствии с запросом

Мне нужно решить упражнение (для начинающих!) и получить в результате частоты всех встречающихся символов в заданном тексте. Моя проблема в том, что я застрял с функцией, которую пытался написать, потому что вместо словаря я получаю в результате список. Я знаю, что проблема, вероятно, заключается в использовании [], но я не нашел лучшего решения, чтобы получить хотя бы один результат.

Вот с чем я борюсь:

def character_frequency(text):
"""
Returns the frequences of all occuring characters in the given text
:param text: A text
:return: Dict in the form {"<character>": frequency, "<character>": frequency, ...}
"""

frequency = {}  # empty dict

    for line in text:
    for character in line.lower():
        if character in frequency:
            frequency[character] += 1
        else:
            frequency[character] = 1
            print(f"character{str(frequency)}")

return frequency

print()
print("excerise")
frequency = character_frequency(growing_plants)
for c, n in frequency.items():
    print(f"Character: {c}: {n}")

Как мне изменить свою функцию, чтобы получить правильный результат словаря?


person buddies    schedule 20.03.2021    source источник
comment
Исправив отступ?   -  person baduker    schedule 20.03.2021


Ответы (2)


Во-первых, я заметил, что у вас неправильный отступ.

def character_frequency(text):
"""
Returns the frequences of all occuring characters in the given text
:param text: A text
:return: Dict in the form {"<character>": frequency, "<character>": frequency, ...}
"""
# Finding most occuring character

# Set frequency as empty dictionary
frequency_dict = {}

for character in string:
    if character in frequency_dict:
        frequency_dict[character] += 1
    else:
        frequency_dict[character] = 1

most_occurring = max(frequency_dict, key=frequency_dict.get)

# Displaying result
print("\nMost occuring character is: ", most_occuring)
print("It is repeated %d times" %(frequency_dict[most_occurring]))
person Abhinav Prabhakar    schedule 20.03.2021

def character_frequency(text):
    """
    Returns the frequences of all occuring characters in the given text
    :param text: A text
    :return: Dict in the form {"<character>": frequency, "<character>": frequency, ...}
    """

    frequency = {}  # empty dict

    for line in text:
        for character in line.lower():
            if character in frequency:
                frequency[character] += 1
            else:
                frequency[character] = 1

    return frequency

growing_plants = "Returns the frequences of all occuring characters in the given text"
print()
print("excerise")
frequency = character_frequency(growing_plants)
print(frequency)
# for c, n in frequency.items():
#     print(f"Character: {c}: {n}")

Выход:

{'r': 6, 'e': 9, 't': 6, 'u': 3, 'n': 5, 's': 3, ' ': 10, 'h': 3, 'f': 2, 'q': 1, 'c': 5, 'o': 2, 'a': 3, 'l': 2, 'i': 3, 'g': 2, 'v': 1, 'x': 1}
person Hussain Bohra    schedule 20.03.2021
comment
большое спасибо! каким-то образом он продолжает показывать список в качестве результата вместо предложенного вами вывода. Я постараюсь выяснить, какую информацию я должен добавить к нему. - person buddies; 20.03.2021