dict.get具有默认值的可读性

问题描述 投票:-1回答:2

这是从value中以key的方式获得dictionary的传统方法,并提供default值作为备用:

value = dictionary.get(key, default)

但是,我想出了在default中省略get值,而使用or技巧:

value = dictionary.get(key) or default

后一种方法通常可读性更好吗?

python dictionary readability
2个回答
2
投票

它不易读(它们基本上是相同的,而且很可能是错误的。

如果dictionary[key]任何伪造的值(None,空字符串,listtuple等或任何零值数字),后者将产生default。仅当get实际上不存在时,default才产生key


-1
投票

关于可读性,我会说它们是相同的。但是,按照惯例,我们习惯于some_dict.get("someKey", None)似乎运行时差异也很小。

python -m timeit '{}.get("key", None)'
>>> 2000000 loops, best of 5: 144 nsec per loop

python -m timeit '{}.get("key") or None'
>>> 2000000 loops, best of 5: 147 nsec per loop

当密钥确实存在时,我们会看到类似的结果

python -m timeit '{"key": "value"}.get("key", None)'
>>> 2000000 loops, best of 5: 183 nsec per loop

python -m timeit '{"key": "value"}.get("key") or None'
>>> 2000000 loops, best of 5: 187 nsec per loop
© www.soinside.com 2019 - 2024. All rights reserved.