我有包含多个字典对象的列表。我想检测特定键值对中何时没有值。值存在时,它是数字。当该值不存在时,它似乎是一个空字符串(从堆栈数据判断)。
最初我尝试过:
for dictionary_item in row_list:
if dictionary_item['targetkey'] == '':
#do stuff
遇到号码时会抛出“不支持的操作数类型”错误。
键值对中的值可以是数字或空字符串。对于这种情况,什么是良好的测试表达式?
答案 0 :(得分:2)
我个人会使用isinstance
:
if isinstance(dictionary_item['targetkey'], float):
即使数字为0.0
,这也会有效,在Python中评估为False
。
参见下面的演示:
>>> bool(0.0)
False
>>> isinstance(0.0, float)
True
>>> isinstance(10.0, float)
True
>>> isinstance('', float)
False
>>>
答案 1 :(得分:1)
试试这个,只要字典中的值不包含零,它就会起作用:
if dictionary_item['targetkey']:
# do stuff
以上将检查dictionary_item['targetkey']
是否为非空,非空且非零。如果 是字典中的有效值,则执行以下操作:
if dictionary_item['targetkey'] or dictionary_item['targetkey'] == 0:
# do stuff