是否可以:
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的键。
答案 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
精确,因为如果v
为0
,None
,empty 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}