Вам лучше избегать промежуточного list
и просто обновлять каждую клавишу по ходу:
total = 1000
d = {"key_1":150, "key_2":350, "key_3":500}
for k, v in d.items():
d[k] = [100 * (v / total), v]
Хотя технически возможно zip
ключи dict
со значениямииз list
, пока ключи не изменены, а порядок list
поддерживается в соответствии со значениями, извлеченными из dict
, результирующий код будет пахнуть запаха кода,и в любом случае проще просто избежать этого list
.
Обратите внимание, что в представлении не будет знака %
, поскольку такого понятия, как процентный тип, не существует.Единственный простой способ вставить его туда - это сохранить его как строку, а не float
, например, заменив последнюю строку на:
d[k] = [f'{100 * (v / total)}%', v]
, чтобы отформатировать вычисление как строку, и отправить%
на конце.