如果key在dict中具有假值,则获取默认值

时间:2016-07-21 20:22:46

标签: python dictionary default

我在python中工作,并在我的代码中使用dict

如果赠送default不存在或key存在并且key值为falsy,我的情况总是需要x = {'a': 'test', 'b': False, 'c': None, 'd': ''} print x.get('a', []) test print x.get('b', []) # Need [] as False is falsy value in python False print x.get('e', []) # This will work fine, because `e` is not valid key None print x.get('c', []) None print x.get('c', []) or [] # This gives output which I want 值。

例如

Falsy

而不是在or操作中检查def main(argv): gflags.MarkFlagAsRequired('logdir') argv = gflags.FLAGS(argv) 值,是否有任何pythonic方法来获取我的默认值?

2 个答案:

答案 0 :(得分:3)

使用or 返回您的默认值是Pythonic。我不确定您是否会获得更多可读解决方法。

关于在docs中使用or

  

这是一个短路运算符,所以它只评估第二个   参数,如果第一个是假的。

您还必须考虑必须首先访问该值,然后才能将其评估为 Falsy Truthy

答案 1 :(得分:0)

这是一个丑陋的黑客:

from collections import defaultdict

x = {'a': 'test', 'b': False, 'c': None, 'd': ''}
d = defaultdict(lambda : [], dict((k, v) if v is not None else (k, []) for k, v in x.items()))
print(d['a'])
# test
print(d['b'])
# False
print(d['e'])
# []
print(d['c']) 
# []