Обратите внимание, что нам нужно накапливать сумму отдельно для каждой из множества категорий (часов). Простое решение (в чистом виде Python) объединяет шаблон аккумулятора при использовании словаря для хранения всех отсчетов.
Сначала давайте воспользуемся time.strptime
, чтобы извлечь часы, используя понимание списка.
In [1]: list1 = [['8/16/2016 9:55', 6], ['11/22/2015 13:43', 29], ['5/2/2016 10:14', 1],
: ['8/2/2016 14:20', 3], ['10/15/2015 16:38', 17], ['9/26/2015 23:23', 1],
: ['4/22/2016 12:24', 4], ['11/16/2015 9:22', 1], ['2/24/2016 17:57', 1],
: ['6/4/2016 17:17', 2]]
In [2]: from time import strptime
In [3]: hour_list = [(strptime(time, "%m/%d/%Y %H:%M").tm_hour, val) for time, val in list1]
Решение состоит в том, чтобы использовать словарь для сбора статистики по каждой категории. Сделайте это, (а) начав с пустого словаря и (б) обновив суммы для каждого нового значения. Это можно сделать следующим образом.
In [4]: comments_by_hour = {}
In [5]: for hour, val in hour_list:
: comments_by_hour[hour] = val + comments_by_hour.get(hour, 0)
:
In [6]: comments_by_hour
Out[6]: {9: 7, 13: 29, 10: 1, 14: 3, 16: 17, 23: 1, 12: 4, 17: 3}
Обратите внимание, что comments_by_hour.get(hour, 0)
используется для получения текущего значения за этот час, если оно существует, или с помощью значения по умолчанию 0 в противном случае.