我有两个列表列表,一个包含两个日期和一个 ID 号,另一个包含很多信息,包括一个 ID 号和一个日期。我需要查找该日期是否在每个 ID 号的其他两个日期之间,如果是,请将其写入新列表。更简单地说,对于每个 ID 号,如果某个日期介于其他两个日期之间,则将信息写入一个新列表。目前,所有列表都被放入新列表中,这是错误的(并非所有日期都在其他两个日期之间)。
mv = [['05/13/2012', '09:54:27', 'U', '#0F', '0006E3DADA', 'T', 'Un\n', 'F3', '13 05 12'],
['05/13/2012', '09:54:28', 'U', '#0F', '0006E3DADA', 'T', 'Un\n', 'F3', '13 05 12'],
etc]
对于 mv,这是我感兴趣的列表中的最后一个日期。
datepairs = [['21 05 01', '04 06 01', 'C1'],
['27 07 06', '10 08 06', 'C1'],
etc]
这些是 mv 的日期必须介于两者之间的两个日期。
visitsbetweendates=[]
for visit in mv:
for date in datepairs1:
if date[2]==visit[7]: #if the id number is the same in both lists
if date[0]<= visit[8] <= date[1]: #if the visit date is between the datepair dates
if visit not in visitsbetweendates: #if the list is unique
visitsbetweendates.append(visit)
break
我认为可能发生的是 date[2]、date[0] 和 date[1] 并不是每次循环运行时都来自 datepairs 中的同一个列表,或者 id 编号出现问题。如果这不是特别清楚,我很抱歉。谢谢你的帮助!
编辑: 这是我将日期转换为日期时间对象的方法,这是在上面的代码之前完成的。
from datetime import datetime
for v in mv:
e=datetime.strptime(visit[0],'%m/%d/%Y')
s=e.strftime('%d %m %y')
visit.append(s)
datepairs1=[]
for date in datepairs:
d=datetime.strptime(str(date[0]),' %d %b %y')
f=datetime.strptime(str(date[1]),' %d %B %Y')
e=d.strftime('%d %m %y')
g=f.strftime('%d %m %y')
gah=[e,g,date[2].strip(' ')]
datepairs1.append(gah)