使用 python 创建附近用户列表
create list of nearby users using python
我有一个用户列表,每个用户都有纬度和经度值。我正在尝试为每个用户创建 "nearby users" 的列表。我相信我的距离计算有效,但我无法为每个用户创建列表。
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': []}]
感谢您的帮助!
当我按照我的评论建议添加以下内容时,我 认为 结果是正确的:
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):
a_nearby_users.append(b_email)
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])
print(users)
输出:
[{'nearby_users': ['austin2@gmail.com', 'austin3@gmail.com'], 'lat': 30.3, 'email': 'austin1@gmail.com', 'long': -97.67}, {'nearby_users': ['austin1@gmail.com', 'austin3@gmail.com'], 'lat': 30.2, 'email': 'austin2@gmail.com', 'long': -97.73}, {'nearby_users': ['austin1@gmail.com', 'austin2@gmail.com'], 'lat': 30.26, 'email': 'austin3@gmail.com', 'long': -97.74}, {'nearby_users': [], 'lat': 26.62, 'email': 'palm_beach@gmail.com', 'long': -80.05}]
我有一个用户列表,每个用户都有纬度和经度值。我正在尝试为每个用户创建 "nearby users" 的列表。我相信我的距离计算有效,但我无法为每个用户创建列表。
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': []}]
感谢您的帮助!
当我按照我的评论建议添加以下内容时,我 认为 结果是正确的:
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):
a_nearby_users.append(b_email)
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])
print(users)
输出:
[{'nearby_users': ['austin2@gmail.com', 'austin3@gmail.com'], 'lat': 30.3, 'email': 'austin1@gmail.com', 'long': -97.67}, {'nearby_users': ['austin1@gmail.com', 'austin3@gmail.com'], 'lat': 30.2, 'email': 'austin2@gmail.com', 'long': -97.73}, {'nearby_users': ['austin1@gmail.com', 'austin2@gmail.com'], 'lat': 30.26, 'email': 'austin3@gmail.com', 'long': -97.74}, {'nearby_users': [], 'lat': 26.62, 'email': 'palm_beach@gmail.com', 'long': -80.05}]