python找最小值

有一个字典a
a = {111: (-37.4168610028693, 145.005372256037),
222: (-37.7032933463858, 144.572524145218),
333: (-37.7292612709136, 144.650631483984),
444: (-37.7777637471456, 144.772303608804),
555: (-37.5792063872414, 144.72816450831),
666: (-37.7830652929363, 144.802188066669),
777: (-37.6019247988331, 144.943306014347)}

列表b
b = [(-38.04683, 145.1261)
(-37.78122000000001, 145.0336)
(-37.7709, 145.1104)
(-37.7076, 144.9097)
(-37.7762, 145.0958)
(-37.97593, 145.18931)]

我想用haversine包计算出b列表每个元素到字典a中的每个values的距离,并找到每个列表元素到字典value的最小值然后返回字典key,比如b[0]到字典a['111']的距离是b[0]到字典a的所有value中的距离最短,那么打印key111和距离。请问要如何实现呢

封装成函数了

from haversine import haversine

a = {111: (-37.4168610028693, 145.005372256037),
     222: (-37.7032933463858, 144.572524145218),
     333: (-37.7292612709136, 144.650631483984),
     444: (-37.7777637471456, 144.772303608804),
     555: (-37.5792063872414, 144.72816450831),
     666: (-37.7830652929363, 144.802188066669),
     777: (-37.6019247988331, 144.943306014347)}

b = [(-38.04683, 145.1261),
     (-37.78122000000001, 145.0336),
     (-37.7709, 145.1104),
     (-37.7076, 144.9097),
     (-37.7762, 145.0958),
     (-37.97593, 145.18931)]

def getMinDist(a:dict, b:list): 
     minDist = 2**31-1
     key = 0
     for k in a.keys():
          for i in range(len(b)):
               d = haversine(a[k], b[i])
               if(d<minDist):
                    minDist = d
                    key = k
     return key, minDist

k, d = getMinDist(a, b)
print(f"关键字是{k}, 最短距离是{d}")


import haversine

a = {111: (-37.4168610028693, 145.005372256037),
     222: (-37.7032933463858, 144.572524145218),
     333: (-37.7292612709136, 144.650631483984),
     444: (-37.7777637471456, 144.772303608804),
     555: (-37.5792063872414, 144.72816450831),
     666: (-37.7830652929363, 144.802188066669),
     777: (-37.6019247988331, 144.943306014347)}
b = [(-38.04683, 145.1261),
     (-37.78122000000001, 145.0336),
     (-37.7709, 145.1104),
     (-37.7076, 144.9097),
     (-37.7762, 145.0958),
     (-37.97593, 145.18931)]
MIN_key = 111
MIN = float('inf')
for key, i in a.items():
    for j in b:
        dis = haversine.haversine(i, j)
        if dis < MIN:
            MIN = dis
            MIN_key = key
        print(haversine.haversine(i, j))
print("MIN_key:{}".format(MIN_key))


import haversine
a = {111: (-37.4168610028693, 145.005372256037),
222: (-37.7032933463858, 144.572524145218),
333: (-37.7292612709136, 144.650631483984),
444: (-37.7777637471456, 144.772303608804),
555: (-37.5792063872414, 144.72816450831),
666: (-37.7830652929363, 144.802188066669),
777: (-37.6019247988331, 144.943306014347)}

b = [(-38.04683, 145.1261),
(-37.78122000000001, 145.0336),
(-37.7709, 145.1104),
(-37.7076, 144.9097),
(-37.7762, 145.0958),
(-37.97593, 145.18931)]

min_dis = 10000
for bi in b:
    for key, value in a.items():
        dis = haversine.haversine(value, bi)
        if dis < min_dis:
            min_dis = dis
            min_key = key
            min_b = bi
print('min_distance:', min_dis)
print(a[min_key], min_b)