# 현재 위치에서 가장 가까운 공항 찾기
# 공항의 위도, 경도
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 |