リストには2つのリストがあります。1つには2つの日付とID番号が含まれ、もう1つにはID番号と日付を含む多くの情報が含まれています。その日付が各ID番号の他の2つの日付の間にあるかどうかを確認する必要があります。その場合は、新しいリストに書き込みます。より簡単に言えば、ID番号ごとに、日付が他の2つの日付の間にある場合は、その情報を新しいリストに書き込みます。現在、すべてのリストが新しいリストに追加されていますが、これは誤りです(すべての日付が他の2つの間にあるわけではありません)。
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からの日付が間になければならない2つの日付です。
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]がすべて日付ペアの同じリストから取得されていないか、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)