Получение наибольшего значения из словаря и замена этого значения новой буквой - PullRequest
0 голосов
/ 07 апреля 2020

Привет, я пытаюсь провести частотный анализ, чтобы найти ключ. У меня есть словарь со всеми значениями. Я пытаюсь изменить значение, которое встречается чаще всего в словаре, на «е», как это встречается чаще всего в английском языке.

Я искал в Интернете, и все, что я пробую, не работает так скажем, d = {a: 54, b: 73, d: 98}

я хочу изменить это d на букву е.

как мне go об этом в моем текстовый файл? например, как мне вызвать словарь для реализации такого изменения?

спасибо!

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Я нашел этот полезный совет из другого поста ( Получение ключа с максимальным значением в словаре? ):

import operator
stats = {'a':1000, 'b':3000, 'c': 100}
max_key = max(stats.iteritems(), key=operator.itemgetter(1))[0]

Вы можете использовать его для доступа к ключу с наибольшим значением, а затем выполните

d['e'] = d[max_key]
d.pop(max_key)

, чтобы переименовать элемент.

0 голосов
/ 07 апреля 2020

Вот мое решение, предполагающее, что вы хотите сделать это для всех букв (не только 'e'):

Очевидно, что d и frequencies могут быть расширены по мере необходимости.

d = {'a':54, 'b': 73, 'd': 98}

# letters in decreasing order of frequency
frequencies = ['E','T','A','O','I','N','S','R','H','D','L','U','C','M','F','Y','W','G','P','B','V','K','X','Q','J','Z']

# get a list of values (the numbers) from the dictionary
values = list(d.values())

# sort the numbers in decreasing order
values.sort(reverse = True)

# build a new dictionary with the sorted letters as keys and sorted values as values.
d = {frequencies[i] : values[i] for i in range(min(len(values), len(frequencies)))}

print(d)

Полученное значение d будет

{'E': 98, 'T': 73, 'A': 54}
...