Как найти значение ключа в словаре, который является частью списка с несколькими словарями. (вытащил из API - PullRequest
0 голосов
/ 28 августа 2018

Я использую API, чтобы вытащить этот список. Мне нужно, чтобы пользователь мог ввести имя авиакомпании. Затем, как только имя захвачено, сопоставьте имя с кодом «icao» в том же словаре.

Мой код

import requests 
api-url= ("https://api.url")
class airlinenames(Component):
    def start(self):
        name = "Ali Airlines"
        url = API_URL
        data = requests.get(url).json()

        icao = data['airlines'][0]['icao']

        text = ( "this is your airline: {name} and this is the icao code: {icao}"
        ).format(
           name=name,
           icao=icao
        )
        message = self.create_message(text=text)
        return self.respond(message=message, action="next"

Моя проблема в том, что вместо того, чтобы вытягивать совпадающее «icao» из того же словаря, оно вытягивает самый следующий в верхней части.

Так, например, если пользователь входит в "Али-Эйрлайнз" На нем должно быть написано «Это ваша авиакомпания: Али Эйрлайн, ваш код ИКАО: ALI

Пример списка:

{
"airlines": [
  { 
   "fs": "BS",
   "iata": "BS",
   "icao": "ALI",
   "name": "Ali Airlines",
   "active": true
  },
  {
   "fs": "BS*",
   "iata": "BS",
   "icao": "BAL",
   "name": "Bali Airline",
   "active": true
  },
  {
   "fs": "BSK",
   "iata": "LL",
   "icao": "GAL",
   "name": "Gali airline",
   "active": true
  }
]
}

1 Ответ

0 голосов
/ 29 августа 2018

В настоящее время в коде, который вы указали, вы всегда получаете самую первую авиакомпанию (данные ['Airlines'] [0]).

Вместо этого вам, вероятно, следует преобразовать данные в словарь, в котором сначала указывается название авиакомпании, например ::

airlines = { a['name'] : a for a in data['airlines']}

Теперь с этим словарем и переменной name вы можете найти соответствующий код:

icao = airlines[name]['icao'] # This will give you the code give a name.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...