import json, os
def load_data(filepath):
if not os.path.exists(filepath):
return None
with open(filepath, 'r') as file:
return json.load(file)
def get_biggest_bar(data):
bars = []
for bar in data:
bars.append((bar['Cells']['SeatsCount'] , bar['Number']))
max_number = max(bars)[1]
(item for item in data if item['Number'] == max_number).__next__()
return item, max_number
def get_smallest_bar(data):
bars = []
for bar in data:
bars.append((bar['Cells']['SeatsCount'] , bar['Number']))
min_number = min(bars)[1]
(item for item in data if item['Number'] == min_number).__next__()
return item, min_number
def get_closest_bar(data, longitude, latitude):
coordinates = []
def get_distance(point, input_point):
return ((longitude-input_point[0])**2 + (latitude - input_point[1])**2)**1/2
for cell in data:
coordinates.append([cell['Cells']['geoData']['coordinates'],cell['Number']])
for coor in coordinates:
coor[0] = get_distance(point, coor[0])
closest_bar = min(coordinates)[1]
(item for item in data if item['Number'] == closest_bar).__next__()
return item, closest_bar
if __name__ == '__main__':
data = load_data("Bars.json")
print(get_smallest_bar(data))
print(get_biggest_bar(data))
print(get_closest_bar(data, 50.0, 50.0))
에서 같은 항목을 반환 그리고 그것은 출력은 : 당신이 본대로다른 기능 파이썬 사전
(dict_values(['Семёновский переулок, дом 21', 'нет', 'район Соколиная Гора', 'Восточный административный округ', 'да', 177, {'type': 'Point', 'coordinates': [37.717115000077776, 55.78262800012168]}, 'СПБ', 272459722, [{'PublicPhone': '(916) 223-32-98'}], 'SПБ']), 37)
(dict_values(['Семёновский переулок, дом 21', 'нет', 'район Соколиная Гора', 'Восточный административный округ', 'да', 177, {'type': 'Point', 'coordinates': [37.717115000077776, 55.78262800012168]}, 'СПБ', 272459722, [{'PublicPhone': '(916) 223-32-98'}], 'SПБ']), 434)
(dict_values(['Семёновский переулок, дом 21', 'нет', 'район Соколиная Гора', 'Восточный административный округ', 'да', 177, {'type': 'Point', 'coordinates': [37.717115000077776, 55.78262800012168]}, 'СПБ', 272459722, [{'PublicPhone': '(916) 223-32-98'}], 'SПБ']), 170)
이 항목 COMPLETLY 동일하지만, 그들은 diffrent 있습니다 (I는 기능으로 나눔하고이를 실행하려고 seperatly, 그리고 그들은 다른 항목을 출력)! 또한 fucntion의 반환에서 두 번째 숫자를 볼 수 있습니다 - 그들은 다릅니다! 무슨 일이야?!
이것은 기능이 고장 났음을 나타냅니다. 정확성을 확인하기 위해 철저히 테스트 했습니까? – Carcigenicate
내가 게시물에서 말했듯이, 나는 seperatly를 달리게하려고 노력했다. 그리고 그들은 fine 일했다! 또한, 각 함수의 반환에서 항목 번호가 반환되며 서로 다릅니다. –
"filename"이 없으므로 일부 테스트 데이터를 작성했습니다. 그들이 잘 작동한다고 생각하면 그렇지 않습니다. 그들은 당신이 그것을 실행할 때 올바른 일이 일어나는 어떤 전역 변수를 리턴합니다. –