Python if语句:False与0.0

时间:2010-10-16 12:25:30

标签: python if-statement

是否可以:

for k,v in kwargs.items()
    if v == None or v == '' or v == 1.0 or v == False:
       del kwargs[k]

如果v == 0.0,则不删除密钥? (假似乎等于0.0),并且没有删除等于True的键。

5 个答案:

答案 0 :(得分:12)

或者你可以这样说:

if v in (None, '', 1.0) or v is False:

答案 1 :(得分:11)

您应该使用v is False代替v == False。这与您与None的比较同样适用。见PEP 8 - Style Guide for Python

  

对像None这样的单身人士的比较应该始终使用'is'或'is not',而不是等于运算符。

答案 2 :(得分:5)

从PEP 8开始,根据你的建议减速:

  

不要使用==

将布尔值与True或False进行比较
   Yes:   if greeting:

   No:    if greeting == True:

   Worse: if greeting is True:

同样比较浮动值不应使用== ,而是

abs(x-other)< verysmall

答案 3 :(得分:1)

你也可以使用

if not v:
    # do something

这可能不如if v is False精确,因为如果v0Noneempty set等,它也会运行。

我遇到了这个问题,上面的解决方案对我有用。

答案 4 :(得分:0)

感谢您的回复。使用这些建议,问题得以解决:

kwargs = {'None': None, 'empty': '', 'False': False, 'float': 1.0, 'True': True}       
for k,v in kwargs.items():
    if v in (None, '', 1.0) and v is not True:
        del kwargs[k]
    if v is False:
        del kwargs[k]

kwargs
{'True': True}

- >

kwargs = {'None': None, 'empty': '', 'False': False, 'float': 0.0, 'True': True}       
for k,v in kwargs.items():
     if v in (None, '', 1.0) and v is not True:
         del kwargs[k]
     if v is False:
         del kwargs[k]

kwargs
{'True': True, 'float': 0.0}