Igo*_*isk 6 python dictionary list
在Ruby中(实际上是在Rails上),我具有以下try功能:
[].try(:[], 1) # => nil
[10].try(:[], 1) # => nil
[10, 20].try(:[], 1) # => 20
[10, 20, 30].try(:[], 1) # => 20
{}.try(:foo) # => nil
{ foo: 'bar' }.try(:foo) # => 'bar'
Run Code Online (Sandbox Code Playgroud)
该函数基本上是避免if检查位置是否存在的快捷方式。
Python中有类似的东西吗?
dict.get您可以使用dict.get:
d = {'foo' : 'bar'}
print(d.get('foo'))
'bar'
print(d.get('xxxxx'))
None
Run Code Online (Sandbox Code Playgroud)
您还可以将默认参数传递给get:
print(d.get('xxxxx', 'Invalid Key!'))
Invalid Key!
Run Code Online (Sandbox Code Playgroud)
当键在字典中不存在时打印出默认值。
try-except块不幸的是,列表dict.get在其 API 中没有等效项,因此您需要自己实现一个。值得庆幸的是,您可以扩展list类并覆盖__getitem__以干净利落地做到这一点。
class MyList(list):
def __getitem__(self, idx, default='oops'):
try:
return super().__getitem__(idx)
except IndexError:
return default
l = MyList([10, 20])
l[1]
# 20
l[3]
# 'oops'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |