У меня есть словарь, который выглядит так:

the 117
to 77
. 77
, 56
a 47
is 46
and 41
that 39
...

Я хотел разделить каждое число в словаре на максимальное значение .. поэтому я сделал это:

count_values = (count.values())
newValues = [x / max(count_values) for x in count_values]

Я хочу заменить значения в словаре новыми значениями.

Как я могу это сделать?

1
Shelina 14 Мар 2018 в 07:37

2 ответа

Лучший ответ

Попробуйте использовать словарное понимание.

old_values = {'the': 117, 'to': 77, '.': 77, ',': 56, 'a': 46, 'is': 46, 'and': 41, 'that': 39}
m = max(old_values.values())
new_values = {k: v / m for k, v in old_values.items()}

Это производит словарь как это:

{'the': 1.0, 
 'to': 0.6581196581196581, 
 '.': 0.6581196581196581, 
 ',': 0.47863247863247865, 
 'a': 0.39316239316239315, 
 'is': 0.39316239316239315, 
 'and': 0.3504273504273504, 
 'that': 0.3333333333333333}
3
kale 14 Мар 2018 в 04:55

Во-первых, вы, вероятно, не хотите вычислять max(count_values) снова и снова для каждого элемента, поэтому сделайте это один раз заранее:

max_value = max(count.values())

Теперь, если вам действительно нужно изменить диктовку на месте, сделайте это следующим образом:

for key in count:
   count[key] /= max_value

Однако, если вам это не нужно, обычно проще создать новый диктант через понимание, как в отличном ответе Халимура Али:

count = {key: value / max_value for key, value in count.items()}
0
abarnert 14 Мар 2018 в 04:58