Django, как суммировать значение набора запросов в значениях словаря - PullRequest
0 голосов
/ 04 мая 2020

У меня есть следующий словарь наборов запросов:

   {'Key_1': [100.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
    'Key_2': [103.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}

В котором я имею в качестве ключа категорию моих товаров и в качестве позиций 12 значений, которые представляют собой сумму каждого месяца. Я хочу вычислить перекрестную сумму всех ключей каждого элемента, как показано в следующем примере:

{'Total': [203.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]'}

Как я могу получить ее?

1 Ответ

3 голосов
/ 04 мая 2020

Вы можете использовать zip, sum и понимание списка:

d = {
    'Key_1': [100.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
    'Key_2': [103.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}

sum_dict = {
    'Total': [sum(t) for t in zip(*d.values())],
}
# sum_dict = {'Total': [203.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}

Пошаговое объяснение [sum(t) for t in zip(*d.values())]:

  1. [sum(t) for t in zip([100.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [103.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])]
  2. [sum(t) for t in [(100.0, 103.0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0)]]
  3. [203.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
...