字典中的Python最近坐标

2024-09-25 08:37:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下字典:

points = {'Location1': (76, 81), 'Location2': (75, 105), 'Location3': (76, 130), 'Location4': (76, 152)}

我正在尝试如果我有一组坐标;coord=(x,y)来查找与坐标最近的值对的键。但我要找回最接近的那把钥匙。在

我是这样做的,但必须有一个更有效的方法。在

^{pr2}$

Tags: 方法字典points钥匙coordpr2location3location1
1条回答
网友
1楼 · 发布于 2024-09-25 08:37:48

您根本不需要使用列表(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,可以删除{}:

^{pr2}$

或者

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)

相关问题 更多 >