大多数pythonic方法检查Key是否在字典中并且Value不是None

时间:2016-09-24 04:45:02

标签: python dictionary

我正在使用flaskflask_restful,并且有类似

的内容
self.reqparse = reqparse.RequestParser()
self.reqparse.add_argument('OptionalArg', type=str, default=None)
self.reqparse.add_argument('OptionalArg2', type=str, default=None)
self.__args = self.reqparse.parse_args()

if 'OptionalArg' in self.__args and self.__args['OptionalArg'] is not None:
     # Do something with the OptionalArg only
     pass
else:
     # Do something with all the arguments that are not None.
     pass

Most relevant answer I found.

虽然这个问题是在几年前提出来的,但我想知道是否有更多的pythonic方式来检查Key是否在字典中而且Value不是{{1} }。

我提到Noneflask的原因是为了证明我的字典中flask_restful的{​​{1}}值的初始化是正确的。

1 个答案:

答案 0 :(得分:2)

只需使用dict.get方法和可选的default参数即可。如果d[key]存在于字典key中,则返回d,否则返回default值:

In [1]: d = {1: 'A', 2: None}

In [2]: d.get(1)
Out[2]: 'A'

In [3]: d.get(2)

In [4]: d.get(1) is not None
Out[4]: True

In [5]: d.get(2) is not None
Out[5]: False

In [6]: d.get(3) is not None
Out[6]: False

对于你的情况:

if self.__args.get('OptionalArg') is not None:
     # Do something with the OptionalArg only
     pass
else:
     # Do something with all the arguments that are not None.
     pass