Python

[파이썬]dictionary의 value의 최대값, 최소값의 key 값 찾기

bornsoon 2024. 12. 12. 16:40

# 현재 위치에서 가장 가까운 공항 찾기

# 공항의 위도, 경도
airport = [{'port': '인천', 'lat': 37.46, 'lng': 126.45},
           {'port': '청주', 'lat': 36.43, 'lng': 127.30},
           {'port': '제주', 'lat': 33.30, 'lng': 126.29}]

dist = {}

# 현재 위치의 위도, 경도
loc = [35.00, 126.55]

for i in airport:
    dist[i['port']] = pow(pow((i['lat'] - loc[0]), 2) + pow((i['lng'] - loc[1]), 2), 0.5)


print(min(dist))

min_key = min(dist, key=dist.get)
print(min_key, dist[min_key])

 

 

min(dist)

위의 결과는 dist란 딕셔너리에서 key 값을 기준으로 최소값을 반환하므로 원하는 결과를 얻기 힘들다.

 

min(dist, key=dist.get)

위의 min(딕셔너리, key=딕셔너리.get)을 쓰면 원하는 최솟값의 key값을 얻을 수 있다.

 

 

==========================================================================

## numpy로 기하학적 접근방법으로 풀기

import numpy as np

def distance(x, x1):
    x2 = np.array(x)  # ndarray 연산
    x3 = np.array(x1)
    diff = x3 - x2
    # display(x2, x3, diff)  # x2, x3, diff 모두 ndarray
    
    return np.sqrt(np.sum(diff**2))

위의 코드는 ndarray를 이용한 함수로 거리값을 반환해준다.

labels = ['인천', '청주', '제주']
locs = [
    [37.46, 126.45],
    [36.43, 127.30],
    [33.30, 126.29]
]

loc = [35.00, 126.55]

err = [distance(n, loc) for n in locs]

min_idx = np.argmin(err)
labels[min_idx]
728x90

'Python' 카테고리의 다른 글

[파이썬] 큐(Queue)  (0) 2025.01.24
[파이썬] Django, Flask, FastAPI  (0) 2025.01.01
[파이썬] assert  (0) 2024.12.02
[파이썬] 피클(pickle)  (1) 2024.12.02
[파이썬] 람다표현식  (1) 2024.12.02