Python 如果dict不';没有键或值为空

Python 如果dict不';没有键或值为空,python,dictionary,Python,Dictionary,如果字典x没有键字段或者它确实有键但值是空的dict,我想返回None 我有results=x.get('field'),如果键不存在,它将返回None。如果存在x.get('field')将返回一个dict。如果x.get('field')返回{},我希望results也为None。有一种很好的蟒蛇式的方法吗 目前我有results=x.get('field'),如果x.get('field'),则没有。这似乎非常复杂。如果dict包含空dict,可以使用或运算符显式返回None result

如果字典
x
没有键
字段
或者它确实有键但值是空的dict,我想返回
None

我有
results=x.get('field')
,如果键不存在,它将返回
None
。如果存在
x.get('field')
将返回一个dict。如果
x.get('field')
返回
{}
,我希望
results
也为
None
。有一种很好的蟒蛇式的方法吗


目前我有
results=x.get('field'),如果x.get('field'),则没有
。这似乎非常复杂。

如果dict包含空dict,可以使用
运算符显式返回
None

results = x.get('field') or None

但是请注意,对于其他类型的值,整个bool状态都是false,例如
0
'
等。

Python是duck类型的,字典可以包含任何类型的值。您必须显式地检查返回值是否为dict以及是否为空

value = x.get('field')
if value == {}:
    value = None

我可能会把它写成一个显式的条件,这样我测试的目的就更明显了<代码>结果=x.get('field');if not results:results=None
您当前拥有的功能非常完美,这可能是我将如何实现它的,因为它只需要一行代码@AdamSmith的建议也有效,但本质上是同一段代码,但对于Python新手来说更容易阅读。是否有必要为
get()
指定默认类型
None
?我认为默认值为
None
@mystic如果不是,
d.get(“缺少密钥”)
将默认值为
None
,无论第二个参数是否显式为
None