Skip to main content
 首页 » 编程设计

python之返回包含 Python 中最接近匹配值的元素的数组索引

2025年05月04日12飞鱼

如何返回其子元素值是与我的查询最匹配的 Int 的数组元素的索引。

例如: 如果数组看起来像这样:

{ 
  "data": [ 
      { 
        "time": 1483304400, 
      }, 
      { 
        "time": 1483308000, 
      }, 
      { 
        "time": 1483311600, 
      }, 
      { 
        "time": 1483315200, 
      }, 
      { 
        "time": 1483318800, 
      } 
    ] 
} 

我的查询是 1483311700 然后我想返回 2 因为这是最接近的匹配元素的索引。

请您参考如下方法:

这可以使用内置的 min 来完成具有自定义键函数的函数,该函数返回 'time' 键值与 query 值之间的绝对差值。

min(it, key=keyfunc) 根据keyfunc返回it中的最小元素。如果你使用 enumerate(it)而不是 it 并相应地调整关键函数,min 将返回元素及其索引:

>>> index, value = min(enumerate(data), key=lambda x:abs(x[1]['time'] - query)) 
>>> index 
2 

这里的 data 是您输入的 'data' 键的值。