2024-09-25 08:37:48 发布
网友
我有以下字典:
points = {'Location1': (76, 81), 'Location2': (75, 105), 'Location3': (76, 130), 'Location4': (76, 152)}
我正在尝试如果我有一组坐标;coord=(x,y)来查找与坐标最近的值对的键。但我要找回最接近的那把钥匙。在
我是这样做的,但必须有一个更有效的方法。在
您根本不需要使用列表(array),可以将字典(points)传递给min;字典的键将传递给key函数:
array
points
min
key
>>> from functools import partial >>> >>> def find_nearest(points, coord): ... dist = lambda s, key: (s[0] - points[key][0]) ** 2 + \ ... (s[1] - points[key][1]) ** 2 ... return min(points, key=partial(dist, coord)) ... >>> points = {'Location1': (76, 81), 'Location2': (75, 105), ... 'Location3': (76, 130), 'Location4': (76, 152)} >>> find_nearest(points, (0, 0)) 'Location1' >>> find_nearest(points, (100, 100)) 'Location2' >>> find_nearest(points, (100, 200)) 'Location4'
通过直接访问lambda中的coord,可以删除{}:
coord
或者
def find_nearest(points, coord): x, y = coord dist = lambda key: (x - points[key][0]) ** 2 + (y - points[key][1]) ** 2 return min(points, key=dist)
您根本不需要使用列表(
array
),可以将字典(points
)传递给min
;字典的键将传递给key
函数:通过直接访问lambda中的}:
^{pr2}$coord
,可以删除{或者
相关问题 更多 >
编程相关推荐