这是从value
中以key
的方式获得dictionary
的传统方法,并提供default
值作为备用:
value = dictionary.get(key, default)
但是,我想出了在default
中省略get
值,而使用or
技巧:
value = dictionary.get(key) or default
后一种方法通常可读性更好吗?
它不易读(它们基本上是相同的,而且很可能是错误的。
如果dictionary[key]
为任何伪造的值(None
,空字符串,list
,tuple
等或任何零值数字),后者将产生default
。仅当get
实际上不存在时,default
才产生key
。
关于可读性,我会说它们是相同的。但是,按照惯例,我们习惯于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