3 回答

TA贡献1836条经验 获得超5个赞
据我了解,您想对给定日期的给定周的所有 V1...V4 值进行一些操作。首先,我将从查找给定日期的星期一(周开始)开始。
year, week, weekday = my_date.isocalendar()
last_monday_date = my_date - datetime.timedelta(days = weekday - 1)
会给你最后一个星期一的日期。
最后在循环的日期范围内迭代 WO 值并获得结果。

TA贡献1878条经验 获得超4个赞
您可以使用嵌套defaultdict从同一周收集数据,使用周数作为键(或其他一些可散列的标识符)。然后使用嵌套的字典理解来对您的列表列表进行元素求和。
from collections import defaultdict
dd = defaultdict(lambda: defaultdict(list))
for k1, v1 in WO.items():
for k2, v2 in v1.items():
dd[k1.isocalendar()[1]][k2].append(v2)
WO_agg = {k1: {k2: list(map(sum, zip(*v2))) for k2, v2 in v1.items()} \
for k1, v1 in dd.items()}
print(WO_agg)
# {51: {'V1': [21, 27, 28],
# 'V2': [28, 16, 44],
# 'V3': [200, 210, 212],
# 'V4': [1200, 1244, 502]},
# 52: {'V1': [107, 172, 79],
# 'V2': [124, 43, 44],
# 'V3': [503, 552, 561],
# 'V4': [1000, 1128, 457]}}
添加回答
举报