我有一个可用的代码,但我想知道是否有更符合Python风格的方法。我有一个字典,我想要检查:
- 键是否存在
- 该值不是None(在这种情况下是SQL中的NULL)
- 该值不仅仅是引号引号(空?)
- 该值不仅仅包含空格
所以在我的代码中,“a”,“b”和“c”的键将成功,这是正确的。
import re
mydict = {
"a":"alpha",
"b":0,
"c":False,
"d":None,
"e":"",
"g":" ",
}
#a,b,c should succeed
for k in mydict.keys():
if k in mydict and mydict[k] is not None and not re.search("^\s*$", str(mydict[k])):
print(k)
else:
print("I am incomplete and sad")
我上面的代码虽然有效,但看起来条件太多了。也许这确实是正确的解决方案,但我想知道是否有更符合Python风格的“存在且有内容”的方法或更好的方式来做到这一点?
更新 感谢大家提供精彩的答案和周到的评论。根据一些要点和建议,我稍微更新了问题,因为还有一些条件我没有考虑到,应该也要满足。我还将示例更改为循环(测试更容易一些吧?)。
if mydict.get("a", "").strip():
怎么样?None
和""
都是假值。 - 0x5453mydict['a']
是None
,那么这个方法会失败,因为None
没有strip
方法。 - chepner"a" in mydict
而不必调用mydict.keys()
。 - jwoos