[英]Python Dictionary with dual values key, need to find maximum and minimum value
[英]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.