python - 尝试将日期列表放入 date.year、date.month、date.day 中进行比较?

标签 python list loops date

我有一个列表列表,每个列表中都有整数值,代表 8 年期间的日期。

     dates = [[2014, 11, 14], [2014, 11, 13], ....., [2013, 12, 01].....]

我需要比较这些日期,以便可以找到每月的平均成本以及文件中存储的其他数据。所以我需要弄清楚如何迭代日期并在月份变化时停止。 每个日期都有相应的成本和数量值,我需要它们来计算平均值。

所以我试图找到一种方法以 x.year、x.month、x.day 格式制作日期并这样做,但我是 python 新手,非常困惑。

如何迭代 8 年期间的所有日期,但停止并计算每个特定月份的数据平均值并存储每个月的平均值?

提前致谢,希望这是有道理的。

最佳答案

您可以使用字典将年和月保存为键,并将列表中的相对日期作为值,然后您可以对按年和月分类的项目进行任何操作。

>>> dates = [['2014', '11', '14'], ['2014', '10', '13'], ['2014', '10', '01'], ['2014', '12', '01'], ['2013', '12', '01'], ['2013', '12', '09'], ['2013', '10', '01'], ['2013', '10', '05'], ['2013', '04', '01']]
>>> my_dict = {}
>>> 
>>> for y,m,d in dates:
...     my_dict.setdefault((y,m),[]).append(d)
... 
>>> my_dict
{('2013', '10'): ['01', '05'], ('2013', '12'): ['01', '09'], ('2014', '11'): ['14'], ('2014', '10'): ['13', '01'], ('2014', '12'): ['01'], ('2013', '04'): ['01']}
>>> 

您可以使用嵌套列表理解将结果转换为日期时间对象的相对月份的嵌套列表:

>>> [[datetime(int(y),int(m),int(d)) for d in days] for (y,m),days in my_dict.items()]
[[datetime.datetime(2013, 10, 1, 0, 0), datetime.datetime(2013, 10, 5, 0, 0)], [datetime.datetime(2013, 12, 1, 0, 0), datetime.datetime(2013, 12, 9, 0, 0)], [datetime.datetime(2014, 11, 14, 0, 0)], [datetime.datetime(2014, 10, 13, 0, 0), datetime.datetime(2014, 10, 1, 0, 0)], [datetime.datetime(2014, 12, 1, 0, 0)], [datetime.datetime(2013, 4, 1, 0, 0)]]

关于python - 尝试将日期列表放入 date.year、date.month、date.day 中进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33546935/

相关文章:

java - 一个 do while 循环内的 if-else 循环 另一个 do while 循环内的 if-else 循环

c - 有条件地向后或向前迭代的最快方法

Python 多处理 apply_async 从不在 Windows 7 上返回结果

java - SpringBoot : call a query using RestTemplate

Python二级继承

c# - 来自字典 C# 的数组

Python 列表语法帮助

javascript - 为什么即使我将值插入其中,空数组仍然为空?

python - Django Admin list_display 添加列【统计相关外键的记录】

python - 文件 i/o 和二进制模式的含义