Python: 找到字典中键[值]与其他值的差异,并返回最小差异的ID

2024-10-03 09:14:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力寻找字典中与特定值相差最小的键(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\u R001到\u R005)中每个时间的时间值的差来分配这个dummy\u w的T\u id。你知道吗

我想分配一个有最小的abs(时差)。你知道吗

在这种情况下,分配给dummy\u w[T\u id]的id应该是“y”。你知道吗

如有任何建议,我们将不胜感激。谢谢。你知道吗


Tags: csviddfhome字典time时间de
2条回答

我会将key关键字参数用于min函数:

>>> result = min(list_of_all_dicts, key=lambda d: abs(d['Time'] - dummy_w['Time']))
>>> result['t_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等是从哪里来的,但是考虑一下,最好从嵌套字典开始,其中这些是键而不是变量名。你知道吗

相关问题 更多 >