Python 为两个列表编制索引并比较其值
我正在做一个日期时间验证项目。具体来说,确保每个间隔都有一个日期时间。如果间隔中缺少datetime,我会将缺少的值添加到时间戳对象列表中 当我运行下面的代码时,它会将大多数日期时间标记为缺失,即使它们没有。我认为这是一个索引问题。我哪里做错了 代码:Python 为两个列表编制索引并比较其值,python,python-2.7,indexing,Python,Python 2.7,Indexing,我正在做一个日期时间验证项目。具体来说,确保每个间隔都有一个日期时间。如果间隔中缺少datetime,我会将缺少的值添加到时间戳对象列表中 当我运行下面的代码时,它会将大多数日期时间标记为缺失,即使它们没有。我认为这是一个索引问题。我哪里做错了 代码: 导入日期时间 _RRATE=[0,1,0]#以[分钟、小时、天]为单位的数据刷新率 LOCALE=“西雅图”#单元站点的位置 timesList=[]#初始化时间戳列表并填写错误 #类Timestamp允许我们将单个时间戳的所有数据存储在一个对象
导入日期时间
_RRATE=[0,1,0]#以[分钟、小时、天]为单位的数据刷新率
LOCALE=“西雅图”#单元站点的位置
timesList=[]#初始化时间戳列表并填写错误
#类Timestamp允许我们将单个时间戳的所有数据存储在一个对象中。
类时间戳:
x=1#为每个新的时间戳对象提供数据集的唯一标识符
丢失邮票=0
定义初始化(self、datetime、location、errorMessage):
self.timestamp=datetime
self.location=位置
self.error=errorMessage
self.UID=Timestamp.x
时间戳.x+=1
timesList.append(self)
def updateError(self,newError):
self.error=newError
定义(自我):#使打印时间列表看起来整洁
返回str(self.UID)+“”+str(self.timestamp)+“,“+self.location+”,“+self.error”
def副本(索引):
圣殿骑士=[]
对于时间列表中的时间戳:
templast.append(timestamp.timestamp)
如果tempList中的datetimes[索引]:
时间戳(日期时间[索引],区域设置,“重复”)
返回真值
其他:
返回错误
def离地(索引):
对于timesList中的timestampObj:
如果(timestampObj.timestamp>datetimes[index]):
时间戳(日期时间[索引],区域设置,“不合适”)
返回真值
其他:
返回错误
def丢失时间戳(datetimeObj):
Timestamp.missingStamps=0
如果dateAdd(timesList[len(timesList)-1]。timestamp)0:
errorCount+=Timestamp.missingStamps
Timestamp.missingStamps=0
其他:
时间戳(日期时间[i],区域设置,“无错误”)
对于时间列表中的元素:
打印元素
b=日期时间。日期时间(2018,7,20)
c=日期时间。日期时间(2018,7,20,1)
d=日期时间。日期时间(2018,7,20,2)
e=日期时间。日期时间(2018,7,20,7)
f=日期时间。日期时间(2018,7,20,7)
g=日期时间。日期时间(2018,7,20,9)
h=日期时间。日期时间(2018,7,20,16)
i=日期时间。日期时间(2018,7,20,16)
j=日期时间。日期时间(2018,7,20,9)
日期时间=[b,c,d,e,f,g,h,i,j]
main()
根据@Prune在问题注释中的规定,您应该对问题进行更完整的描述 也就是说,我运行了您的代码,从我得到的输出来看,问题似乎出在主函数中控制流语句的逻辑中,具体来说:
elif (missingTimestamp(datetimes[i]))>0:
errorCount+=Timestamp.missingStamps
Timestamp.missingStamps = 0
当遇到丢失的时间戳时,例如在d
和e
之间时,missingTimestamp
函数将填充小于等于e
的值,但不包括e
,并且在函数返回后控制块不会处理此问题。然后它移动到f
,并且e
未放置在全局timesList
变量中
该问题的一个简单解决方案是将elif
块更改为:
elif (missingTimestamp(datetimes[i]))>0:
errorCount+=Timestamp.missingStamps
Timestamp.missingStamps = 0
# Line below to add current value to global timeList variable
Timestamp(datetimes[i],LOCALE, "no error")
欢迎来到StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。
elif (missingTimestamp(datetimes[i]))>0:
errorCount+=Timestamp.missingStamps
Timestamp.missingStamps = 0
# Line below to add current value to global timeList variable
Timestamp(datetimes[i],LOCALE, "no error")