我正确使用“全部”吗?

时间:2015-06-11 14:13:32

标签: python

用户询问(Keyerror while using pandas in PYTHON 2.7)他在查找词典时遇到KeyError的原因以及如何避免此例外。

作为答案,我建议他先检查字典中的键。因此,如果他需要['key_a', 'key_b', 'key_c']中的所有密钥dictionary,他可以使用以下方法对其进行测试:

if not all([x in dictionary for x in ['key_a', 'key_b', 'key_c']]):
    continue

这样他就可以忽略那些没有预期密钥的字典(字典列表是用从文件加载的JSON格式的行创建的)。 * 如果与此问题相关,请参阅原始问题以获取更多详细信息。

一位在Python和SO方面经验丰富的用户,我认为这是其职业生涯和金徽章的权威,告诉我我错误地使用all。我想知道这是不是真的如此(我可以告诉它,它按预期工作)和原因,或者是否有更好的方法来检查是否有一些键都在字典中。

1 个答案:

答案 0 :(得分:13)

是的,这样可以正常工作,但你甚至不需要列表理解

if not all(x in dictionary for x in ['key_a', 'key_b', 'key_c']):
    continue

如果你有周围的[],它会在调用all之前评估所有元素。如果你删除它们,那么内部表达式就是一个生成器,并且会False在第一个QUERY_STRING上。