@Immortal1337

Как найти наибольшее значение в json python?

Есть документ json с некоторой информацией о всех московских барах.
Изначально json уже содержит нечитаемый набор данных.
Есть вот такой набор данных полученный с помощью json.dumps об одном баре:
[
...
 {
        "Address": "Нижний Кисельный переулок, дом 3, строение 1",
        "AdmArea": "Центральный административный округ",
        "District": "Мещанский район",
        "ID": "000069302",
        "IsNetObject": "нет",
        "Latitude_WGS84": "55.7653669567739740",
        "Longitude_WGS84": "37.6215879462381080",
        "Name": "Юнион Джек",
        "PublicPhone": [
            {
                "PublicPhone": "(495) 621-19-63",
                "global_id": 21025.0,
                "global_object_id": 20660594.0,
                "system_object_id": "000069302_1"
            }
        ],
        "SeatsCount": 30,
        "SocialPrivileges": "нет",
        "TypeObject": "бар",
        "geoData": {
            "coordinates": [
                37.62158794615201,
                55.76536695660836
            ],
            "type": "Point"
        },
        "global_id": 20660594,
        "system_object_id": "000069302"
    },
...
]


Вопрос: как найти самый большой бар (самое большое значение "SeatsCount")?
Я в питоне новичок, подскажите как это реализовать, желательно с объяснениями :)

В гугле я нашел рабочий код, но не совсем понимаю что к чему:
def get_biggest_bar(data):
    biggest_bar = max(data, key=lambda x: x['SeatsCount'])
    return biggest_bar, biggest_bar

А именно что означает x['SeatsCount']
  • Вопрос задан
  • 871 просмотр
Решения вопроса 1
aRegius
@aRegius
Python Enthusiast
Вот чуть более упрощенный пример:
>>> rows = [
	        {'fname': 'Alex', 'lname': 'Ivanov', 'num': 10},
	        {'fname': 'Vitaly', 'lname': 'Serov', 'num': 40},
	        {'fname': 'Sergey', 'lname': 'Popov', 'num': 20},
	        {'fname': 'Stas', 'lname': 'Borodin', 'num': 30}]

>>> def get_biggest_num(data):
	        biggest_num = max(data, key=lambda x: x['num'])
	        return biggest_num

>>> result = get_biggest_num(rows)
>>> result
{'fname': 'Vitaly', 'lname': 'Serov', 'num': 40}


Непосредственно эта строка - key=lambda x: x['num'] - означает, что сравнение словарей производится по значению ключа "num".

Пример на простом словаре:
>>> d = dict(name='Petr', num=100)
>>> d
{'name': 'Petr', 'num': 100}   # 'name' и 'num' - ключи словаря d, 'Petr' и 100 - их значения соответственно
>>> d['num']
100
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы