我经常发现自己在python中检查词典,看看键是否在词典中,以及键是否有有用的信息(在我的例子中,是一个非零长度的字符串)。例如,我似乎经常需要检查kwargs这样的数据:
if ('partition' not in kwargs or kwargs['partition'] is None
or kwargs['partition'] == ""):
raise Exception("Need 'partition' for this method")
是否有一种更简单,直接的方式来做到这一点,我错过了?
答案 0 :(得分:1)
使用字典对象的get()
方法让Python自动确定其truthiness:
if not d.get('partition'):
raise Exception("Need 'partition' for this method")
答案 1 :(得分:1)
Pythonic采用哪种方法可能取决于字典内容是内部还是外部接口。
如果你正在编写一个库,使用从命令行读取的字典内容,或者在程序员不负责内容的情况下使用类似的东西,你会想要做类似于你所做的事情。写在OP作为良好的防御性编程实践。如果这是您的代码中常见的惯用语,您可能希望编写一个提供类似处理的函数,同时概括您正在寻找的特定键,例如:
def key_contains_contents(user_dict, key):
return (key in user_dict) and user_dict[key] and len(user_dict[key]) > 0
根据需要添加其他条款。
如果dict的内容是由程序本身创建的,那么你也可以想出一种标准的方法来表达一个键是否包含有意义的数据并坚持下去。您正在解决的具体问题可能会以某种方式表明使代码创建dict更简单。但是,如果没有任何其他约束,那么首先没有设置密钥似乎是最简单的。