簡體   English   中英

Python:找到字典的key [value]與其他值的差異,並返回具有最小差異的id

[英]Python: Find difference of dictionary's key[value] with other values and return the id which has the minimum difference

我一直在努力獲取具有特定值的最小差異的字典的key(id)。
例如,

我有一本字典,

dummy_w = {'Time': 1006120000,'T_id' : ''} 

然后,

dummy_R001 = {'Filename':"home/abc/de.csv",'Time':1006090000,'t_id':'x'}   
dummy_R002 = {'Filename':"home/abc/df.csv",'Time':1006100000,'t_id':'y'}  
dummy_R003 = {'Filename':"home/abc/d.csv",'Time':1026030000,'t_id':'z'}  
dummy_R004 = {'Filename':"home/abc/ef.csv",'Time':1026080000,'t_id':'p'}  
dummy_R005 = {'Filename':"home/abc/f.csv",'Time':1026120000,'t_id':'q'}  

我想根據與五個字典(dummy_R001到_R005)的每個時間的時間值的差異為該dummy_w分配T_id。

我想分配一個具有最小abs(時間差)的。

在這種情況下,分配給dummy_w [T_id]的ID應該為“ y”。

任何建議將不勝感激。 謝謝。

您可以使用單行代碼,在其中遍歷所有'Time'值,計算abs()差,並取min()差。 然后將其分配給dummy_w['T_id']

min_diff = min((abs(dummy_w['Time']-d['Time']),d['t_id']) for d in [dummy_R001,dummy_R002,dummy_R003,dummy_R004,dummy_R005])
# (20000, 'y')

dummy_w['T_id'] = min_diff[1]
# {'T_id': 'y', 'Time': 1006120000}

請注意,我不確定dummy_R001等來自何處,但請考慮從嵌套字典開始,將它們作為鍵而不是變量名可能更好。

我會在min函數中使用key關鍵字參數:

>>> result = min(list_of_all_dicts, key=lambda d: abs(d['Time'] - dummy_w['Time']))
>>> result['t_id']
'y'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM