【发布时间】:2021-10-19 19:11:44
【问题描述】:
我正在尝试计算(排序的、不同的)日期之间的平均时间。这些日期存储在列表中,这些列表作为值保存在字典中(键是唯一标识符),如下所示:
my_dict = {'001':[datetime.date(2014, 7, 29), datetime.date(2014, 8, 1), datetime.date(2014, 8, 5), datetime.date(2014, 8, 13)], '002':[datetime.date(2014, 7, 29), datetime.date(2014, 8, 1), datetime.date(2014, 8, 5), datetime.date(2014, 8, 13)]...}
这是我为此编写的代码:
for j,k in dicts.items():
for i in range(0,len(k)):
y = timedelta(days=0)
x = k[i] - k[i-1]
y = y + x
n = len(k)
score = y/n
dicts.update({j:score})
但是,当我将得到的值与数据进行比较时,它们似乎不正确,但我不确定为什么会这样。有人可以指出我在这里做错了什么吗?
编辑:不正确是指平均值不正确。例如 10008 吐出 '10008':datetime.timedelta(days=33, seconds=57600)。但该条目的日期是 11/25/2012、3/30/2013、7/92013,相隔超过 33 天。
【问题讨论】:
-
wdym
seem to be incorrect? -
索引到
k[i-1]将在i==0时环绕到k的last 元素,这真的是您想要的吗?如果不迭代range(1,len(k)),不要忘记相应地调整n(n 个元素列表表示 n-1 个增量) -
请展示一些示例输出并解释其中的不正确之处。
-
例如 10008 吐出 '10008':datetime.timedelta(days=33, seconds=57600)。但该条目的日期是 11/25/2012、3/30/2013、7/92013,相隔超过 33 天。
标签: python date dictionary datetime time