Заявление Python if: False vs. 0.0 - PullRequest
6 голосов
/ 16 октября 2010

Можно ли:

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

без удаления ключа, если v == 0,0?(False, кажется, равен 0,0), и без удаления ключей, которые равны True.

Ответы [ 5 ]

12 голосов
/ 16 октября 2010

Или вы можете выразить это так:

if v in (None, '', 1.0) or v is False:
11 голосов
/ 16 октября 2010

Вы должны использовать v is False вместо v == False. То же самое относится к вашему сравнению с None. См. PEP 8 - Руководство по стилю для Python :

Сравнение с синглетами, подобными None, всегда должно выполняться с помощью «is» или «not», никогда не выполняйте операторы равенства.

5 голосов
/ 16 октября 2010

Замедлитесь, ребята, с вашим советом из PEP 8:

Не сравнивайте логические значения с True или False, используя ==

   Yes:   if greeting:

   No:    if greeting == True:

   Worse: if greeting is True:

Также сравниваязначение с плавающей запятой, которое вы не должны использовать == , но

abs (x-other)

1 голос
/ 23 марта 2017

Также вы можете использовать

if not v:
    # do something

Это может быть не так точно, как if v is False, как это также работает, если v равно 0, None, empty set и т.д.

У меня были проблемы с этой проблемой, и вышеуказанное решение сработало для меня.

0 голосов
/ 16 октября 2010

Спасибо за ваши ответы.Используя предложения, проблема была решена:

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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...