【问题标题】:List KeyError Python列出 KeyError Python
【发布时间】:2016-10-04 18:43:52
【问题描述】:

我正在尝试使用 Glassdoor 的 API 中的值附加一个列表。

当我从这个 API 收到回复时,我会得到诸如公司名称、评级、CEO 等信息,还有更多信息,最后,如果公司归母公司所有,我也会得到这些信息。

我的问题是,当我在列表中附加所有这些信息时,如果我从 API 获得响应的公司没有母公司,我不希望它跳过提取其他相关数据,例如姓名、CEO 等。我希望它打印出该公司响应的可用数据,然后打印出母公司所在的位置 NA。

我从 API 获得响应的每家公司的可用数据可能有不同的长度/变化。

例如:

comp_info.append(data['response']['employers'][0]['name'])

这就是我想要实现的目标,Apple 没有母公司,而 LSI Corporation 有。我不确定如何解决这个问题?

[APPLE,蒂姆库克,4.5,不适用,计算机硬件] [LSI Corporation,Some Guy,4.6,Avago Technologies,计算机硬件]

【问题讨论】:

  • 要获得调试代码的帮助,您需要发布实际代码和实际错误以及必要的示例数据。简而言之,您需要使用if 语句来测试条件并选择替代行为。请注意,python 中的 list 不会引发 KeyError (如您的问题摘要中所示),因为列表没有键。
  • @dsh,同意。当他谈论KeyError时,他可能指的是data字典
  • @brianpck 我同意你的看法。我提到它是因为他似乎没有足够清晰的理解来确定问题的原因和合适的解决方案。

标签: python json for-loop keyerror


【解决方案1】:

如果我理解正确的话:

comp_info.append(data['response']['employers'][0].get('name', 'N/A'))

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解您的问题,但 Python 有一个“请求宽恕胜过许可”的概念,这在这里可能会有所帮助:

    try:
        comp_info.append(data['response']['employers'][0]['name'])
    except KeyError:
        comp_info.append("N/A")
        # or print ("N/A")
    

    如果您正在寻找与此不同的处理方式,请澄清您的问题。

    【讨论】:

    • 即使我的代码显示为:comp_info.append(data['response']['employers'][0]['parentEmployer'].get('name', '不适用'))
    • comp_info.append(data['response']['employers'][0].get('parentEmployer', 'N/A'))
    • @RossJohnson 除非您包含更多详细信息,否则我只能推测:尚不清楚错误发生在哪个级别。如果只有一个键可能丢失,请使用get。如果缺少任何级别的数据结构,请使用我的 try 块。
    【解决方案3】:
    comp_info.append(data['response']['employers'][0].get('parentEmployer', 'N/A'))
    

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多