如何返回其子元素值是与我的查询最匹配的 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' 键的值。
