Source code for kyu_6.character_frequency.character_frequency

"""Character frequency"""

#  Created by Egor Kostan.
#  GitHub: https://github.com/ikostan
#  LinkedIn: https://www.linkedin.com/in/egor-kostan/


[docs]def letter_frequency(text: str) -> list: """ return a list of tuples sorted by frequency with the most frequent letter first. Any letters with the same frequency are ordered alphabetically :param text: :return: """ results: list = [] chars: dict = dict() text = text.lower() for c in text: if c.isalpha() and c not in chars: chars[c] = text.count(c) results.append((c, chars[c])) results = sort_list(results) return results
[docs]def sort_list(results) -> list: is_sorted = False results_length = len(results) while not is_sorted: is_sorted = True for i, result in enumerate(results): if i < (results_length - 1) and (results[i][1] < results[i + 1][1]): results[i], results[i + 1] = results[i + 1], result is_sorted = False elif i < (results_length - 1) and \ (results[i][1] == results[i + 1][1]) and \ (results[i][0] > results[i + 1][0]): results[i], results[i + 1] = results[i + 1], result is_sorted = False return results