Python 如何确定字典中是否存在非空字符串?

Python 如何确定字典中是否存在非空字符串?,python,dictionary,keyword-argument,Python,Dictionary,Keyword Argument,我经常在python中检查字典,查看字典中是否有键,以及键是否包含有用的信息(在我的例子中,是长度为非零的字符串)。例如,我似乎经常需要检查kwargs中的以下数据: if ('partition' not in kwargs or kwargs['partition'] is None or kwargs['partition'] == ""): raise Exception("Need 'partition' for this method") 有没有一种更简单、直接的方

我经常在python中检查字典,查看字典中是否有键,以及键是否包含有用的信息(在我的例子中,是长度为非零的字符串)。例如,我似乎经常需要检查kwargs中的以下数据:

if ('partition' not in kwargs or kwargs['partition'] is None
    or kwargs['partition'] == ""):
    raise Exception("Need 'partition' for this method")

有没有一种更简单、直接的方法可以做到这一点,而我却缺少了这种方法?

使用dictionary对象的
get()
方法,让Python自动确定它的:

if not d.get('partition'):
    raise Exception("Need 'partition' for this method")

哪种方法是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的代码更简单。尽管没有任何其他约束,但首先不设置密钥似乎是最简单的。

如果没有kwargs.get('partition'):
如果密钥不在kwargs字典中,这仍然有效吗?因此,您希望确保即使“partition”密钥存在,它也必须有一些东西?
kwargs.get(“partition”),是
我觉得应该有一种更简洁的方法,尽管是的,我希望密钥存在并具有非零长度的字符串。根据评论中的额外问题,我相信他们也希望检查密钥的值是否也为空。因此,即使密钥存在,它也必须有一些东西。等待OP在评论中确认。请注意这一点。如果该值为空字符串,则不会引发此问题
kwargs.get(“partition”,即“”)是“”
will。我认为不需要显式强制转换。Python已经执行了隐式强制