Python:查找字典的差异';s键[value]与其他值并返回差异最小的id
我一直在努力寻找字典中与特定值差异最小的键(id)。Python:查找字典的差异';s键[value]与其他值并返回差异最小的id,python,loops,dictionary,key,Python,Loops,Dictionary,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_R0
比如说, 我有一本字典,像
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\u w['T\u 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}
注意,我不知道在哪里<代码> DuMyYOR01等等,但是考虑到从一个嵌套的字典开始,你最好是在这些关键字中而不是变量名。
< P>我会使用<代码>键< /COD>关键字参数到<代码> min <代码>函数:>>> result = min(list_of_all_dicts, key=lambda d: abs(d['Time'] - dummy_w['Time']))
>>> result['t_id']
'y'
由于
dummy\u R001
etc是变量而不是列表元素,我甚至不想尝试这个…@Chris\u Rands Wow!!!你真是个天才!!顺便说一句,这是特定文件夹下文件的元数据记录,需要与另一个度量的输出(文件记录)匹配。我要试试嵌套字典!谢谢!!