如何检测列表中可能包含数字或字符串的空/空值?

时间:2013-11-12 19:20:07

标签: python

我有包含多个字典对象的列表。我想检测特定键值对中何时没有值。值存在时,它是数字。当该值不存在时,它似乎是一个空字符串(从堆栈数据判断)。

最初我尝试过:

for dictionary_item in row_list:
    if dictionary_item['targetkey'] == '':
        #do stuff

遇到号码时会抛出“不支持的操作数类型”错误。

键值对中的值可以是数字或空字符串。对于这种情况,什么是良好的测试表达式?

2 个答案:

答案 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