Это, вероятно, то, что вам нужно:
from datetime import datetime
from collections import defaultdict
days = [('04 Aug, 2019', '1 '), ('26 Apr, 2019', '6 '), ('19 Apr, 2019', '4 ')]
totals = defaultdict(int)
for date_str, value_str in days:
totals[datetime.strptime(date_str, "%d %b, %Y").strftime("%A")] += int(value_str)
print(totals)
Результаты:
defaultdict(<class 'int'>, {'Sunday': 1, 'Friday': 10})
Ключевой частью здесь, конечно, является defaultdict
, поскольку она позволяет добавлять к ключу, который ранее не был определен. Конечно, вы также можете начать с dict, который имеет значение 0
для каждого возможного ключа в этом случае, поскольку в неделе есть только 7 дней. Но это оставило бы дни, которые никогда не встречаются в наборе данных 0
, и вам может потребоваться go очистить их впоследствии, поэтому я бы предпочел defaultdict
.
Это использует это решение:
import calendar
from datetime import datetime
days = [('04 Aug, 2019', '1 '), ('26 Apr, 2019', '6 '), ('19 Apr, 2019', '4 ')]
totals = dict(zip(calendar.day_name, [0] * 7))
for date_str, value_str in days:
totals[datetime.strptime(date_str, "%d %b, %Y").strftime("%A")] += int(value_str)
print(totals)
И результат:
{'Monday': 0, 'Tuesday': 0, 'Wednesday': 0, 'Thursday': 0, 'Friday': 10, 'Saturday': 0, 'Sunday': 1}