2016-06-15 131 views
-4

字典的两个值之间的差异我有一个像找到一个列表里面蟒蛇

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)}] 

我想要遍历目录,查看两个日期时间对象之间的差异是否等于一小时,用列表蟒蛇。

我们最后的列表应该 new_list = [{ '温度':39.1, '日期':datetime.datetime(2016年,6,第3,12,32,35)},{ '温度':39.1, 'date':datetime.datetime(2016,6,3,13,32,35)},{'temp':None,'date':None} {'temp':39.1,'date':datetime.datetime 2016,6,3,22,32,35)}]

我是python新手。帮助将不胜感激。

+0

一个什么,一天,月,年等...和你与已知的datetime OBJ或者是你想比较到列表中的下一个对象? – TheLazyScripter

+1

'1','1'是什么意思? – user3636636

+0

@TheLazyScripter:与列表中的下一个对象进行比较(仅限'date'键的值) – Harnish

回答

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') 
+0

非常感谢... – Harnish

+0

没问题的搭档。 – TheLazyScripter

+0

而且,如果if条件满足,我希望将temp和date都作为关键值对添加。如果不是,则应将“None”作为temp和date的值附加到相应索引。 – Harnish