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

在python中查找列表中字典的两个值之间的差异,python,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对象之间的差异

我有一张这样的清单

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对象之间的差异是否等于一小时

我们的最终名单应该是 新列表=[{'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':None,'date':None}{'temp':39.1,'date datetime.datetime(2016,6,3,22,32,35)}

我是python新手。非常感谢您的帮助。

希望这对您有所帮助

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')
导入日期时间
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比较(数据、字段):
#代码
如果len(数据)datetime.timedelta(小时=1):
ret.append(v)
ret.append(数据[i+1])
其他:
ret.append({x:None for x in v})
ret.append({x:None for x in v})
除:
通过
回程网
#测试
差异=比较(d,‘日期’)
打印差异
对于枚举中的i、v(差异):
打印“差异[%s]是d[%s]和d[%s]之间的差异,差异为:%s'(i,i,i+1,'大于1',如果v['date']或'小于1')

一个什么、一天、一个月、一年等等。。。您是在与已知的datetime对象进行比较,还是想与列表中的下一个对象进行比较?您所说的
1
1
是什么意思?@TheLazyScript:与列表中的下一个对象进行比较(仅与'date'键的值进行比较),但一是什么意思?如果它们相差一秒钟,则差值为
00:00:01
,相差一分钟则为
00:01:00
一年的差值为
365天,0:00:00
。你需要明确。差异应该是一个小时。没有问题。而且如果条件满足,我希望temp和date都附加为键、值对。如果不满足,则“None”应该附加为相应索引的temp和date的值。请解释。为我创建所需的输出。编辑我的问题。对于问题中的d,我得到的输出为[{'date':datetime.datetime(2017,6,3,12,32,35),'temp':39.1},{'date':datetime.datetime(2016,6,3,13,32,35),'temp':39.1},{'date':None,'temp':None},{'date':None'[{'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':None,'date':None}{'temp':39.1,'datetime.datetime(2016,6,3,22,32,35)}]