为两个列表之间不常见的日期设置零



我有两个列表

第一个:

[
datetime.date(2021, 7, 1),
datetime.date(2021, 7, 2), 
datetime.date(2021, 7, 3), 
datetime.date(2021, 7, 4), 
...
...
...
datetime.date(2021, 7, 27), 
datetime.date(2021, 7, 28), 
datetime.date(2021, 7, 29), 
datetime.date(2021, 7, 30), 
datetime.date(2021, 7, 31)
]

这是第二个列表:

[(
1, datetime.date(2021, 7, 1), 
3, datetime.date(2021, 6, 19), 
3, datetime.date(2021, 6, 20), 
2, datetime.date(2021, 6, 21), 
2, datetime.date(2021, 6, 22), 
3, datetime.date(2021, 6, 23), 
3, datetime.date(2021, 6, 24), 
1, datetime.date(2021, 6, 25), 
4, datetime.date(2021, 6, 26), 
3, datetime.date(2021, 6, 27), 
2, datetime.date(2021, 6, 28), 
1, datetime.date(2021, 6, 29)
)]

我想检查第二个列表中的哪个日期存在于第一个列表中。然后,如果他们之间有一个共同的日期,我想把之前的值放在字典里。例如";2021-07-01";它很常见,然后我想把以前的值放在一个字典里,像这样:

{
"2021-07-01": "1",
}

但是,如果列表1中有一个日期不在列表2中,我希望它在前面的字典中为零:

{
"2021-07-01": "1",
...
"2021-07-02": "0",
"2021-07-03": "0",
"2021-07-04": "0",
...
...
...
}

有什么想法吗我希望我能明白我的意思。

你在找时间增量吗?

如果没有一段代码和预期结果,很难帮助您

对于不存在的日期,我会使用try/except语句

from datetime import datetime, timedelta
try:
a = datetime(2021, 7, 1)
b = a + timedelta(days = -1)
c = tuple(b.timetuple()[:3])
except:
c = (0,0,0)

print (c)

来源:https://www.geeksforgeeks.org/python-datetime-timedelta-function/https://stackoverflow.com/a/62582119/4173718

date_list是第一个列表,orders_in_dates是第二个列表:

date_dict = dict()
for e in orders_in_dates:
date_dict.setdefault(e[1], e[0])
complete_list = [(d, date_dict.get(d, 0))  for d in date_list]

最新更新