У меня есть список пользователей со значениями широты и долготы для каждого.Я пытаюсь создать список "соседних пользователей" для каждого пользователя.Я считаю, что мой расчет расстояния работает, но я застрял, создавая список для каждого пользователя.
users = [
{'email':'austin1@gmail.com', 'lat': 30.3, 'long': -97.67, 'nearby_users': []},
{'email':'austin2@gmail.com', 'lat': 30.2, 'long': -97.73,'nearby_users': []},
{'email':'austin3@gmail.com', 'lat': 30.26, 'long': -97.74,'nearby_users': []},
{'email':'palm_beach@gmail.com', 'lat': 26.62, 'long': -80.05, 'nearby_users': []}
]
radius = 1
def compare_users(user_a, user_b):
a_email = user_a['email']
a_lat = float(user_a['lat'])
a_long = float(user_a['long'])
a_nearby_users = user_a['nearby_users']
b_email = user_b['email']
b_lat = float(user_b['lat'])
b_long = float(user_b['long'])
b_nearby_users = user_b['nearby_users']
if b_lat > (a_lat - radius):
if b_lat < (a_lat + radius):
if b_long > (a_long - radius):
if b_long < (a_long + radius):
b_nearby_users.append(a_email)
for user_a in range(len(users)):
for user_b in range(user_a + 1, len(users)):
compare_users(users[user_a], users[user_b])
Я ожидаю увидеть взаимных соседних пользователей, и это не происходит логичным образом.Вот результаты, которые я получаю:
[{'email': 'austin1@gmail.com', 'lat': 30.3, 'long': -97.67, 'nearby_users': []},
{'email': 'austin2@gmail.com', 'lat': 30.2, 'long': -97.73, 'nearby_users': ['austin1@gmail.com']},
{'email': 'austin3@gmail.com', 'lat': 30.26, 'long': -97.74, 'nearby_users': ['austin1@gmail.com', 'austin2@gmail.com']},
{'email': 'palm_beach@gmail.com', 'lat': 26.62, 'long': -80.05, 'nearby_users': []}]
Спасибо за помощь!