如何以pythonic方式检查字典的某些变量和特定键是否为None?



假设dict如下所示:

dict_a = {'cc':None, 'pt':None, 'v':87.7, 'sd':None}

和几个变量(不是字典的一部分(,如下所示:

vf = None
vt = None

我想做的是检查ccptvfvt是否同时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值和两个vfvt同时None。这将产生假阴性。


一个更强大和优雅的替代方案是:

all(globals().get(x, dict_a.get(x, '')) is None for x in ('cc', 'pt', 'vf', 'vt'))

但在这里你必须引用'vf''vt'

相关内容

最新更新