Парсинг ключей-значений из нескольких словарей Python

1

Я пытаюсь разработать простое веб-приложение, которое поставляет "carpark_data" на основе введенного пользователем значения для "carpark_number" (например, "SK61"). Я пробовал исследовать, как сортировать на основе заданного ключа: значения для Python dicts, но я дошел до тупика.

Прямо сейчас, у меня есть этот блок кода ниже, который работает для меня как статический сайт, обслуживающий данные из API. Как мне изменить этот код для меня, чтобы служить пользователю, который хотел захватить "carpark_data" на основе любого "carpark_number", который он решил?

# Set the request parameters
url = "https://api.data.gov.sg/v1/transport/carpark-availability"

# Do the HTTP get request
response = requests.get(url)

# Check for HTTP codes other than 200
if response.status_code != 200:
    print('Status:', response.status_code, 'Problem with the request. Exiting.')
    exit()
else:
    jack = response.json()
    daniel = jack['items'][0]["carpark_data"]
    print(json.dumps(daniel, indent=4)) #prints prettified jSON Data

Результат выборки:

[
  {
    "carpark_info": [
        {
          "total_lots": "100",
          "lot_type": "C",
          "lots_available": "72"
        }
    ],
    "carpark_number": "SK61",
    "update_datetime": "2018-06-16T02:47:59"
  },

  {
    "carpark_info": [
      {
        "total_lots": "100",
        "lot_type": "C",
        "lots_available": "72"
      }
    ],
    "carpark_number": "SK61",
    "update_datetime": "2018-06-16T02:47:59"
  }
]
Теги:
python-requests
parsing

1 ответ

0

Я предполагаю, что вы хотите иметь возможность фильтровать результаты до того, кого интересует пользователь? Если это так, это должно сделать трюк:

l1 = [
      {
        "carpark_info": [
            {
              "total_lots": "100",
              "lot_type": "C",
              "lots_available": "72"
            }
        ],
        "carpark_number": "SK61",
        "update_datetime": "2018-06-16T02:47:59"
      },

      {
        "carpark_info": [
          {
            "total_lots": "100",
            "lot_type": "C",
            "lots_available": "72"
          }
        ],
        "carpark_number": "SK62",
        "update_datetime": "2018-06-16T02:47:59"
      }
    ]

wanted_carpark = 'SK62'

# use get so it doesn't fail on no number
list(filter(lambda x: x.get('carpark_number', None) == wanted_carpark, l1))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню