从 Python 字典中的键/值对分配变量是否有明确的最佳实践:
- 如果密钥存在
- 如果键的值不是空字符串
否则为变量分配默认值。
我想使用 dict.get
:
my_value = dict.get(key, my_default)
但是如果键存在且值为空字符串,这会将空字符串分配给 my_value
。使用以下内容是否更好:
if key in dict and dict[key]:
my_value = dict[key]
else:
my_value = my_default
这将利用空字符串的真实性来确保仅将非空字符串分配给 my_value
。
有没有更好的方法来执行此检查?
原文由 Jonathan Evans 发布,翻译遵循 CC BY-SA 4.0 许可协议
也许你的意思是:
我认为应该等同于
if-else
有条件的你有例如
与其他版本相比,此版本的优势非常明显。这很好,因为您只需要执行一次查找,因为
or
短路(一旦它遇到True
类似值,它就会返回它。如果没有类似 True 的值找到,or
返回第二个)。如果您的默认值是一个函数,那么如果您将其编写为:
d.get('foo',func()) or func()
,它 可能会 被调用两次。在这种情况下,最好使用一个临时变量来保存func
的返回值。