我有一个像
这样的清单d=[{'temp': 39.1, 'date': datetime.datetime(2016, 6, 3, 12, 32, 35)}, {'temp': 39.1, 'date': datetime.datetime(2016, 6, 3, 13, 32, 35)}, {'temp': 39.1, 'date': datetime.datetime(2016, 6, 3, 22, 32, 35)}]
我想迭代列表并使用python检查两个DateTime对象之间的差异是否等于一小时。
我们的最终名单应该是 new_list = [{' temp':39.1,' date&#39 ;: datetime.datetime(2016,6,3,12,32,35)},{' temp&#39 ;:39。1,' date&#39 ;: datetime.datetime(2016,6,3,13,32,35)},{' temp&#39 ;: None,' date&#39 ;:无} {' temp':39.1,' date&#39 ;: datetime.datetime(2016,6,3,22,32,35)}]
我是python的新手。帮助将不胜感激。
答案 0 :(得分:1)
希望这有帮助。
import datetime
d = [{'temp': 39.1, 'date': datetime.datetime(2017, 6, 3, 13, 32, 35)}, {'temp': 39.1, 'date': datetime.datetime(2016, 6, 3, 12, 32, 35)}, {'temp': 39.1, 'date': datetime.datetime(2016, 6, 3, 12, 32, 35)}]
def compare(data, field):
#the code
if len(data) <= 1:
return
ret = []
for i, v in enumerate(data):
try:
if v[field] - data[i+1][field] > datetime.timedelta(hours = 1):
ret.append(v)
ret.append(data[i+1])
else:
ret.append({x:None for x in v})
ret.append({x:None for x in v})
except:
pass
return ret
#testing
differences = compare(d, 'date')
print differences
for i, v in enumerate(differences):
print 'differences[%s] is the difference between d[%s] and d[%s], The difference is: %s'%(i, i, i+1, 'Greater than one' if v['date'] else 'Less than one')