【问题标题】:ignore keyError in list list comprehension忽略列表理解中的 keyError
【发布时间】:2017-10-23 13:17:54
【问题描述】:

我正在尝试提取在字典中具有某些键的所有对象,但是有些字典不包含所有键,我想忽略 keyError 并继续前进。我已经看到了一些使用 try 和 except 执行此操作的实现,但在我的情况下它不起作用

allValues = []
for dictionary in masterDict:
    values = [(dictionary[x]) for x in keysArray]
    allValues.append(values)

【问题讨论】:

  • 你期待什么输出?是否应该跳过缺少的键,将其替换为默认值...?
  • 如果key不存在就继续循环
  • 这实际上并没有回答我的问题。请显示输入和输出的示例;应该len(values) == len(keysArray)

标签: python list dictionary list-comprehension


【解决方案1】:

您应该在列表理解中使用过滤器语句

values = [dictionary[x] for x in keysArray <b>if x in dictionary</b>]

所以这里 Python 将首先检查 x in dictionary 是否成立。如果不是,则忽略 x。否则 dictionary[x] 会被添加到字典中。

如果您想忽略这些值,但添加一个后备值到列表中,您可以使用:

values = [<b>dictionary.get(x,fallback)</b> for x in keysArray]

其中fallback 是“后备值”。

【讨论】:

  • 感谢您优雅地解决这个问题,我非常感谢。
猜你喜欢
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
相关资源
最近更新 更多