Как выполнить вычисления в формате dict и вставить в другой оптимизированный dict в python - PullRequest
1 голос
/ 09 апреля 2020

Идея заключается в следующем: у меня есть три дикта (dict1, dict2, dict3), в которых мне нужно выполнить вычисление и вставить результат в другой диктовку (dict4), примечание:

dict1 = {'aaa': 50, 'bbb': 20, 'ccc': 60}
dict2 = {'aaa': 10, 'bbb': 10, 'ccc': 10}
dict3 = {'aaa': 2, 'bbb': 2, 'ccc': 3}

Вычисление для вставки в dict4:

dict4 = {'aaa': 2.5, 'bbb': 1, 'ccc': 2}

, где:

Для каждого равного элемента:

'aaa' => 50 / (10 * 2) = 2.5

'bbb' => 20 / (10 * 2) = 1

'ccc' => 60 / (10 * 3) = 2

Я получил ожидаемый результат, посмотрите на мой код;

for i,j in dict4.items():
    for x,y in dict1.items():
        for k,w in dict2.items():
            for a,b in dict3.items():
                if i==x and i==k and i==a:
                    dict4[i] = y/(w*b)

но я считаю, что это не самая лучшая форма. У кого-нибудь есть более оптимизированная идея?

1 Ответ

3 голосов
/ 09 апреля 2020

Поскольку у вас есть одинаковые ключи во всех трех диктовках, вам не нужно повторять их для каждого из них, просто используйте dict-comprehension, как показано ниже.

dict4 = {k: dict1[k]/(dict2[k]*dict3[k]) for k in dict1}

print(dict4)

Выход:

{'aaa': 2.5, 'bbb': 1.0, 'ccc': 2.0}
...