Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从dict到list的日期_Python - Fatal编程技术网

Python 从dict到list的日期

Python 从dict到list的日期,python,Python,这对我来说太复杂了,所以我请求帮助。我的口述是这样的: dict = {'date_from': u'2019-04-01', 'date_to': u'2019-04-30'} list = ['2019-04'] 从这张纸上,我需要列一张这样的清单: dict = {'date_from': u'2019-04-01', 'date_to': u'2019-04-30'} list = ['2019-04'] 因为月份是一样的 如果dict是这样的

这对我来说太复杂了,所以我请求帮助。我的口述是这样的:

dict = {'date_from': u'2019-04-01', 
        'date_to': u'2019-04-30'}
list = ['2019-04']
从这张纸上,我需要列一张这样的清单:

dict = {'date_from': u'2019-04-01', 
        'date_to': u'2019-04-30'}
list = ['2019-04']
因为月份是一样的

如果dict是这样的话

dict = {'date_from': u'2019-04-01', 
        'date_to': u'2019-05-30'}
该列表应如下所示:

list = ['2019-04', '2019-05']
等等

另一个例子

dict = {'date_from': u'2019-01-01', 
         'date_to': u'2019-05-30'}


list = ['2019-01', '2019-02','2019-03','2019-04','2019-05']

我知道这是可能的,但我不知道如何让它工作。

使用
datetime
&
relativedelta

Ex:

import datetime
from dateutil.relativedelta import relativedelta

d = {'date_from': u'2019-01-01', 'date_to': u'2019-05-30'}
result = []
start = datetime.datetime.strptime(d["date_from"], "%Y-%m-%d") 
end = datetime.datetime.strptime(d["date_to"], "%Y-%m-%d")
while True:
    if start > end:
        break
    result.append(start.strftime("%Y-%m"))
    start = start + relativedelta(months=1)
print(result)   
['2019-01', '2019-02', '2019-03', '2019-04', '2019-05']
输出:

import datetime
from dateutil.relativedelta import relativedelta

d = {'date_from': u'2019-01-01', 'date_to': u'2019-05-30'}
result = []
start = datetime.datetime.strptime(d["date_from"], "%Y-%m-%d") 
end = datetime.datetime.strptime(d["date_to"], "%Y-%m-%d")
while True:
    if start > end:
        break
    result.append(start.strftime("%Y-%m"))
    start = start + relativedelta(months=1)
print(result)   
['2019-01', '2019-02', '2019-03', '2019-04', '2019-05']

您可以使用列表理解:

import datetime

d1= datetime.datetime(2019, 1, 1, 0, 0)
d2= datetime.datetime(2020, 5, 30, 0, 0)

rslt= [ f"{year}-{month:02}" for year in range(d1.year,d2.year+1) for month in range(1,13) if (d1.year,d1.month)<=(year,month)<=(d2.year,d2.month)]

print(rslt)

Out: ['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06', '2019-07', '2019-08', '2019-09', '2019-10', '2019-11', '2019-12', '2020-01', '2020-02', '2020-03', '2020-04', '2020-05']
导入日期时间
d1=datetime.datetime(2019,1,1,0,0)
d2=datetime.datetime(2020,5,30,0,0)

rslt=[f”{year}-{month:02}表示范围内的年份(d1.year,d2.year+1)表示范围内的月份(1,13)如果(d1.year,d1.month)表示您尝试的内容有什么问题?是否出现错误?日期是否总是在同一年?是否不可能重复