首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在具有多个字典的列表的一部分的字典中查找键的值。(从api中提取)

如何在具有多个字典的列表的一部分的字典中查找键的值。(从api中提取)
EN

Stack Overflow用户
提问于 2018-08-28 20:50:10
回答 1查看 60关注 0票数 1

我正在使用api来拉出这个列表。我需要用户能够进入‘名称’的航空公司。然后,一旦该名称被捕获,将“名称”与同一词典中的“民航组织”代码匹配。

我的代码

代码语言:javascript
复制
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"

我的问题是,它不是从同一本字典中提取匹配的“国际民航组织”,而是把下一本放在第一位。

因此,例如,如果用户输入“阿里航空公司”,它应该是“这是您的航空公司: Ali航空公司,您的国际民航组织代码是: ALI”。

示例列表:

代码语言:javascript
复制
{
"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
  }
]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 00:23:17

目前,在您提供的代码中,您总是得到第一家航空公司(数据‘航空公司’)。

相反,您可能应该首先将数据转换为以航空公司名称为关键字的字典,例如:

代码语言:javascript
复制
airlines = { a['name'] : a for a in data['airlines']}

现在,使用该字典和name变量,您可以找到相应的代码:

代码语言:javascript
复制
icao = airlines[name]['icao'] # This will give you the code give a name.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52066017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档