У меня есть словарь с datetime как ключ и список идентификаторов в качестве значения. На самом деле это количество активных пользователей за каждое время дня.Групповой словарь по ключу и найти максимальное значение
Словарь выглядит следующим образом:
2016-03-09 12:13:24 [34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L, 35167L, 35180L]
2016-03-09 12:16:49 [34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L, 35167L, 35187L]
2016-03-09 12:17:14 [34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L, 35167L, 35187L]
2016-03-09 12:21:39 [34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L, 35167L]
2016-03-09 12:22:01 [34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L, 35188L]
2016-03-09 12:23:08 [34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L, 35188L]
2016-03-09 12:23:37 [35191L, 34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L]
2016-03-09 12:24:05 [35191L, 34941L, 34943L, 35183L, 35028L, 35031L, 35081L, 35091L]
То, что я хочу сделать, это сделать словарь, который будет содержать максимальное количество пользователей на каждый день. Что-то вроде:
2016-03-07: 25
2016-03-08: 38
2016-03-09: 12
2016-03-10: 29
EDIT: Я хочу найти пик каждого дня.
Поэтому мне нужно найти длину списка значений, а затем группировать по дате ключа и, наконец, найти максимальное значение группы.
Нахождение длины списка является легкой частью что-то вроде:
for time, user_id in sorted(users_by_time.iteritems()):
user_by_time[time] = len(user_id)
Но я борюсь с группировкой.
Как можно выполнить как групповое, так и максимальное вычисление и в идеале наиболее эффективным/питоническим способом?
Клавиша ввод Словарь являются datetime.datetime объектов? или строки? –
@MuhammadTahir, они являются объектами datetime.datetime. – Galil
Было бы полезно, если бы вы разместили свой 'dict' в синтаксисе' dict', чтобы пользователи могли скопировать и вставить его напрямую :) –