Как мне суммировать последовательные элементы списка, когда я использую другой параметр, чтобы решить это - PullRequest
0 голосов
/ 26 декабря 2018

У меня сейчас проблема, и я немного застрял.У меня есть 2 списка, «продает» и «дата».Эти продажи состоят из нескольких продуктов, и я хочу суммировать все продажи того же месяца.

Допустим, у меня есть

sells = [25, 30, 1, 5, 15, 12]
date = [July 18, July 18, August 18, September 18, September 18, September 18]

Сейчас я пытаюсь решить это следующим образом:

last = None
sell = []
for s, d in zip(sells, date):
    if d == last
    sell.append(sum(s)

Я вроде как следую объяснению, которое я прочиталздесь: Проверить, равно ли следующее значение текущему значению в цикле питона? но я вообще не получаю вывод.

Что я делаю неправильно?

1 Ответ

0 голосов
/ 26 декабря 2018

Вы можете использовать itertools.groupby с zip:

from itertools import groupby 
sells = [25, 30, 1, 5, 15, 12]
date = ['July 18', 'July 18', 'August 18', 'September 18', 'September 18', 'September 18']
new_results = groupby(sorted(zip(date, sells), key=lambda x:x[0]), key=lambda x:x[0])
final_data = {a:sum(b for _, b in c) for a, c in new_results}

Выход:

{'August 18': 1, 'July 18': 55, 'September 18': 32}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...