我有一本字典,T
,其形式为k,i
,其关联值为实数(float)。假设我从字典T
中选择了一个特定的密钥a,b
,对应的值为V1
- 对于具有a+1,i
形式的密钥找到最接近V1
的值的最有效方法是什么?i
是整数,范围从0到n? (k
,a
和b
也是整数)。为了在T
中的项目的值上添加一个条件,由于i
在密钥中增加,因此与T[a+1,i]
相关的值严格增加(即T[a+1,i+1] > T[a+1,i]
)。在字典中查找最接近的值
我打算简单地运行一个while循环,从i = 0
开始,并将值T[a+1,i]
与V1
进行比较。为了更清楚起见,循环将简单地在np.abs(T[a+1,i] - V1) < np.abs(T[a+1,i+1] - V1)
处停止,因为我知道与T[a+1,i]
相关的项目最靠近T[a,b] = V1
。但考虑到我强加的严格增长条件,是否有比运行迭代字典元素的while循环更有效的方法? i
将从0到n,其中n可能是数百万的整数。而且,这个过程会经常重复,所以效率是关键。
*键形式为k,i *,是否意味着字典是一种二维数组? – Jeon
@Jeon是的,它类似于2D阵列(例如,随着我的增加,时间越来越长)。一本字典被选来允许不均匀的间距。尽管其中一个(次要)问题是根据键来确定事物的排列方式。 – Mathews24
@MoinuddinQuadri这不是一项任务...这是一个非均匀网格的个人项目。我想找到一个很好的方法来计算空间导数。我试图找到与当前点最接近的值(例如'V1')来计算数值微分。我还没有实现特定的方法,因为它被添加到另一个代码来解决一组PDE。虽然在更改我的代码之前(如果我学习了更好的方法,最终只能再次更改它),但我认为我会提前询问是否存在我无法察觉的更有效的技术。 – Mathews24