[英]Checking if dictionary is empty using conditional statement in python is throwing a key error
我是Python的新手,所以我通读了Pro Python,其中包含有关将变量关键字参数传递给函数的部分。 阅读该部分后,我写了以下似乎无效的代码。
def fun(**a):
return a['height'] if a is not {} else 0
当我不带参数调用fun时遇到了一个关键错误。 我应该如何更改代码,以便如果a不是空字典,则返回a ['height'],如果是空字典,则返回0?
您正在测试a
是与随机空字典相同的对象 ,而不是该字典是否具有key height
。 is not
, is
测试身份 ,而不是平等。
您可以创建任意数量的空字典,但它们不是同一对象 :
>>> a = {}
>>> b = {}
>>> a == b
True
>>> a is b
False
如果要在缺少键的情况下返回默认值,请在此处使用dict.get()
方法 :
return a.get('height', 0)
或not a
使用not a
来测试空字典:
return a['height'] if a else 0
但是请注意,如果字典中除了'height'
以外'height'
键,您仍然会收到KeyError
。 在布尔上下文中,所有空容器都将测试为false ,请参阅“ 真值测试” 。
要检查字典是否具有特定的键,请执行以下操作:
if 'height' not in a: return 0
或者您可以使用默认的get()
:
return a.get('height', 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.