2016-06-15 78 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