用户询问(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
。我想知道这是不是真的如此(我可以告诉它,它按预期工作)和原因,或者是否有更好的方法来检查是否有一些键都在字典中。
答案 0 :(得分:13)
是的,这样可以正常工作,但你甚至不需要列表理解
if not all(x in dictionary for x in ['key_a', 'key_b', 'key_c']):
continue
如果你有周围的[]
,它会在调用all
之前评估所有元素。如果你删除它们,那么内部表达式就是一个生成器,并且会False
在第一个QUERY_STRING
上。