【发布时间】:2016-10-12 20:33:38
【问题描述】:
我有一个字典 dct,如果它们对应的键存在于指定列表 lst 中,我希望对它的每个值求和。
目前我使用的代码是:
sum(dct[k] for k in lst)
在上面的生成器表达式中,我想处理KeyError,以防在字典中找不到列表中的键。我似乎找不到如何在这个生成器表达式中实现(语法方面)try-except 方法或 if-else 方法。
如果列表中的一个键在字典中没有找到,那么它应该继续获取其他值。 总和的最终结果不应受到任何缺失键的影响。如果不存在任何键,则总和的结果应为零。
【问题讨论】:
-
您不能在生成器表达式中使用
try。为什么不使用dct.get(k),如果找不到密钥,它会给你None而不是错误?在找不到密钥的情况下,您的代码的正确行为是什么(例如,它应该算作0)? -
如果没有找到密钥,那么它应该继续使用剩余的密钥。 (我会更新我的描述来解释这个案例 - 感谢您注意到这一点)
标签: python dictionary keyerror