Jon*_*ans 19 python string dictionary
在Python字典中为键/值对分配变量是否有明确的最佳实践:
否则为变量分配默认值.
我想用dict.get:
my_value = dict.get(key, my_default)
Run Code Online (Sandbox Code Playgroud)
但是my_value如果键存在且值为空字符串,则会为其分配一个空字符串.使用以下内容是否更好:
if key in dict and dict[key]:
my_value = dict[key]
else:
my_value = my_default
Run Code Online (Sandbox Code Playgroud)
这将利用空字符串的真实性来确保仅分配非空字符串my_value.
有没有更好的方法来执行此检查?
mgi*_*son 26
也许你的意思是:
a.get('foo',my_default) or my_default
Run Code Online (Sandbox Code Playgroud)
我认为应该等同于if-else你的条件
例如
>>> a = {'foo':''}
>>> a.get('foo','bar') or 'bar'
'bar'
>>> a['foo'] = 'baz'
>>> a.get('foo','bar') or 'bar'
'baz'
>>> a.get('qux','bar') or 'bar'
'bar'
Run Code Online (Sandbox Code Playgroud)
与其他版本相比,这方面的优势非常明显.这很好,因为你只需要执行一次查找,因为or短路(一旦它达到一个True相似的值,它就会返回它.如果没有找到类似True的值,则or返回第二个).
如果您的默认值是一个函数,如果您将其写为:则可以调用两次 d.get('foo',func()) or func().在这种情况下,最好使用临时变量来保存返回值func.
Mar*_*som 13
做你想做的最简单的方法:
my_value = dict.get(key) or my_default
Run Code Online (Sandbox Code Playgroud)
该or如果结果不假将提供第一个值,否则第二个.与其他语言不同,Python不强制结果为布尔值,有时是非常有用的属性.
| 归档时间: |
|
| 查看次数: |
23964 次 |
| 最近记录: |