【发布时间】:2015-03-20 05:21:54
【问题描述】:
让b 成为一个带有一些值的字典:
b = {}
b[90, 1] = 100, b[90, 55] = 101, b[90, 127] = 102
b[70, 1] = 40, b[70, 45] = 41, b[70, 107] = 42
如何一次性填充dict 及其缺失值作为最近邻,例如0 <= i <= 127、0 <= j <= 127?
(它将在字典中提供 16384 个键,所以这对我的应用程序来说没问题)。
例如,我想要b[73, 40] = b[70, 45] = 41,即二维平面中的最近邻。
这是我尝试过的:
for i in range(127):
for j in range(127):
closest_key = min(b.keys(), key=lambda c: (c[0] - i) ** 2 + (c[1] - j) ** 2)
b[i, j] = b[closest_key]
但它很慢可能是因为有 127*127 循环,我们在其中再次循环所有元素以计算距离!
我们如何以更有效的方式填充缺失值和最近邻的字典?
【问题讨论】:
标签: python dictionary