Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:查找字典的差异';s键[value]与其他值并返回差异最小的id_Python_Loops_Dictionary_Key - Fatal编程技术网

Python:查找字典的差异';s键[value]与其他值并返回差异最小的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

我一直在努力寻找字典中与特定值差异最小的键(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\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!!!你真是个天才!!顺便说一句,这是特定文件夹下文件的元数据记录,需要与另一个度量的输出(文件记录)匹配。我要试试嵌套字典!谢谢!!