【发布时间】:2019-04-09 08:18:20
【问题描述】:
我有一个格式如下的字典 {str: [datetime_object]}
示例:
test_data={'127.0.0.1':[datetime.datetime(2016, 5, 31, 2, 3, 48), datetime.datetime(2016, 5, 31, 3, 0, 53)],
'127.0.0.2': [datetime.datetime(2016, 5, 30, 0, 15, 10), datetime.datetime(2016, 5, 31, 2, 18, 29), datetime.datetime(2016, 5, 31, 2, 18, 41), datetime.datetime(2016, 5, 31, 2, 18, 49), datetime.datetime(2016, 5, 31, 2, 21, 32), datetime.datetime(2016, 5, 31, 2, 21, 40), datetime.datetime(2016, 5, 31, 2, 21, 46), datetime.datetime(2016, 5, 31, 2, 22), datetime.datetime(2016, 5, 31, 23, 0, 0)],
'127.0.0.3': [datetime.datetime(2016, 5, 31, 2, 19, 34), datetime.datetime(2016, 5, 31, 2, 19, 39)],
'127.0.0.4': [datetime.datetime(2016, 5, 31, 2, 20, 36), datetime.datetime(2016, 5, 31, 2, 20, 41)],
'127.0.0.5': [datetime.datetime(2016, 5, 31, 2, 21, 5)],
'127.0.0.6': [datetime.datetime(2016, 5, 31, 2, 21, 6)],
'127.0.0.7': [datetime.datetime(2016, 5, 31, 2, 21, 5)],
'127.0.0.8': [datetime.datetime(2016, 5, 31, 2, 21, 34), datetime.datetime(2016, 5, 31, 2, 21, 38)],
'127.0.0.9': [datetime.datetime(2016, 5, 31, 2, 22, 3), datetime.datetime(2016, 5, 31, 2, 23, 5)],
'127.0.0.10': [datetime.datetime(2016, 5, 31, 2, 10, 22), datetime.datetime(2016, 5, 31, 2, 12, 27)],
'127.0.0.11': [datetime.datetime(2016, 5, 31, 3, 11, 46), datetime.datetime(2016, 5, 31, 3, 13, 54)],
'127.0.0.12': [datetime.datetime(2016, 5, 31, 3, 13, 9), datetime.datetime(2016, 5, 31, 3, 13, 17)]}
这些条目是从每个 IP 收到的请求日期时间
我需要计算每个 IP 每小时的平均请求数
我当前的尝试在此代码处结束
def count_accesses():
for key, value in ip_request_datetime_dict.items():
for recived in value:
yield recived.hour
for x in count_accesses():
print(x)
以上代码基于此解决方案 How to count accesses per hour from log file entries?
正确的解决方案输出可能是包含汇率的字典。示例:
-
这个 127.0.0.1 的平均请求率为每小时 2 个请求,因为您可以看到 02:03:48 -> 03:00:53 仍有 3 分钟来计算整小时
-
这个 127.0.0.2 的平均请求率为每小时 3 个请求
ip_hit_rate = {'127.0.0.1': 2, '127.0.0.2': 3, '127.0.0.3': 2, '127.0.0.4': 2, '127.0.0.5': 1, “127.0.0.6”:1}
非常感谢任何帮助
【问题讨论】:
-
列表是否保证排序?
-
为什么
127.0.0.1每小时有 2 个请求?test_data中的 ip 条目是在不同日期创建的? -
我不明白你平均每小时....参考小时是多少?
-
@Chris 感谢您的指出,我已更正了问题
-
@Frenchy 一个IP每小时收到多少请求,我们需要计算每个IP每小时的平均请求数