假设dict
如下所示:
dict_a = {'cc':None, 'pt':None, 'v':87.7, 'sd':None}
和几个变量(不是字典的一部分(,如下所示:
vf = None
vt = None
我想做的是检查cc
、pt
、vf
、vt
是否同时None
。
我试过:
if all(dict_a[c] is None for c in ('cc', 'pt')):
if all(i is None for i in (vf, vt)):
print('Values are none')
它有效,但是有没有更有效、更 pythonic 的方法来检查dict
中的键和变量是否为 none?
我对这个有点怀疑。您的代码看起来很好,并且None
字典值和变量之间的区别感觉很合理。但是,您可以尝试以下方法:
all(dict_a.get(x, x) is None for x in ('cc', 'pt', vf, vt))
。但是你需要更加小心。
一个(相当复杂(它变坏的例子是在初始字典中有一个None
键指向一个非None
值和两个vf
,vt
同时None
。这将产生假阴性。
一个更强大和优雅的替代方案是:
all(globals().get(x, dict_a.get(x, '')) is None for x in ('cc', 'pt', 'vf', 'vt'))
但在这里你必须引用'vf'
和'vt'