我在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方法来获取我的默认值?
答案 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'])
# []