在python中找到列表中两个字典值之间的差异

时间:2016-06-15 05:26:42

标签: python

我有一个像

这样的清单
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的新手。帮助将不胜感激。

1 个答案:

答案 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')