Get the frequency order of the letters in the given string >>> get_frequency_order('Hello World') 'LOWDRHEZQXJKVBPYGFMUCSNIAT' >>> get_frequency_order('Hello@') 'LHOEZQXJKVBPYGFWMUCDRSNIAT' >>> get_frequency_order('h') 'HZQXJKVBPYGFWMUCLDRSNIOATE'
(message: str)
| 49 | |
| 50 | |
| 51 | def get_frequency_order(message: str) -> str: |
| 52 | """ |
| 53 | Get the frequency order of the letters in the given string |
| 54 | >>> get_frequency_order('Hello World') |
| 55 | 'LOWDRHEZQXJKVBPYGFMUCSNIAT' |
| 56 | >>> get_frequency_order('Hello@') |
| 57 | 'LHOEZQXJKVBPYGFWMUCDRSNIAT' |
| 58 | >>> get_frequency_order('h') |
| 59 | 'HZQXJKVBPYGFWMUCLDRSNIOATE' |
| 60 | """ |
| 61 | letter_to_freq = get_letter_count(message) |
| 62 | freq_to_letter: dict[int, list[str]] = { |
| 63 | freq: [] for letter, freq in letter_to_freq.items() |
| 64 | } |
| 65 | for letter in LETTERS: |
| 66 | freq_to_letter[letter_to_freq[letter]].append(letter) |
| 67 | |
| 68 | freq_to_letter_str: dict[int, str] = {} |
| 69 | |
| 70 | for freq in freq_to_letter: # noqa: PLC0206 |
| 71 | freq_to_letter[freq].sort(key=ETAOIN.find, reverse=True) |
| 72 | freq_to_letter_str[freq] = "".join(freq_to_letter[freq]) |
| 73 | |
| 74 | freq_pairs = list(freq_to_letter_str.items()) |
| 75 | freq_pairs.sort(key=get_item_at_index_zero, reverse=True) |
| 76 | |
| 77 | freq_order: list[str] = [freq_pair[1] for freq_pair in freq_pairs] |
| 78 | |
| 79 | return "".join(freq_order) |
| 80 | |
| 81 | |
| 82 | def english_freq_match_score(message: str) -> int: |
no test coverage detected