Python 我使用'all'正确吗?
一位用户问()为什么他在查字典时出现Python 我使用'all'正确吗?,python,Python,一位用户问()为什么他在查字典时出现keyrerror,以及如何避免这种异常 作为回答,我建议他先查一下字典里的钥匙。因此,如果他需要字典中的所有键['key\u a'、'key\u b'、'key\u c'],他可以用以下方法进行测试: if not all([x in dictionary for x in ['key_a', 'key_b', 'key_c']]): continue 通过这种方式,他可以忽略没有预期键的字典(字典列表是从文件加载的JSON格式行创建的)*如果与此
keyrerror
,以及如何避免这种异常
作为回答,我建议他先查一下字典里的钥匙。因此,如果他需要字典
中的所有键['key\u a'、'key\u b'、'key\u c'],他可以用以下方法进行测试:
if not all([x in dictionary for x in ['key_a', 'key_b', 'key_c']]):
continue
通过这种方式,他可以忽略没有预期键的字典(字典列表是从文件加载的JSON格式行创建的)*如果与此问题相关,请参阅原始问题以了解更多详细信息
一个用户在Python中有更多的经验,因此我认为它的职业和黄金徽章的权威告诉我,我错误地使用了<代码>所有< /代码>。我想知道这是否真的是这样(据我所知,这是预期的效果)以及原因,或者是否有更好的方法来检查两个键是否都在字典中。
是的,这很好,但你甚至不需要理解列表if not all(x in dictionary for x in ['key_a', 'key_b', 'key_c']):
continue
如果您有周围的
[]
,它将在调用all
之前计算所有元素。如果删除它们,内部表达式是一个生成器,在第一次False
时,它将作为您的问题的旁白,但是如果您在尝试获取某个键的值之前关心该键是否在字典中,则始终可以调用dict上的get()
方法。因此dict.get('key',None)
将返回key
或None
的值,其中asdict['key']
可能会导致键错误。应该我们=lambda:False#例如NO
和销毁世界=lambda:“召唤Cthulhu,世界的食客”
,然后如果所有(f()代表f in(应该我们,销毁世界)):打印(“我们还在这里吗?”)
不会毁灭世界。@Martijnpiers这方面的问题是,Cthulhu可以按时间和生成器表达式顺序旅行,因此很不幸,他可能会先被称为:P@CoryKramer当前位置然而,在他被召唤之前,他只能保持休眠状态。休眠的Cthulhu是一个快乐而静止的Cthulhu,无论在时间上还是精神上ace.:-)我以为你叫克图鲁第四,不是第一。