PythonでListのIndexErrorを手軽に回避したかった



Page content


dictで存在しないkeyを指定

dictで存在しないkeyを指定すると、KeyErrorが返る。

>>> dic = {
    '11': 'Darvish',
    '22': 'Furuta',
    '33': 'Yamakawa',
    '44': 'Yanagita',
    '55': 'Matsui',
    '66': 'Kazumi'
}
>>> dic['22']
'Furuta'
>>> dic['23']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '23'

KeyErrorを回避

存在しないKeyを指定する可能性がある場合、getを使うと、エラーにせず任意の値を返せる。

>>> error_str = 'Is that number a repdigit?'
>>> dic.get('33', error_str)
'Yamakawa'
>>> dic.get('34', error_str)
'Is that number a repdigit?'

listで存在しないindexを指定

listで存在しない要素を指定した場合は、IndexErrorが返る。

>>> lst = ['Darvish', 'Furuta', 'Yamakawa', 'Yanagita', 'Matsui', 'Kazumi']
>>> lst[5]
'Kazumi'
>>> lst[6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

IndexErrorを回避

listにはdictのgetにあたる、要素指定エラーの回避手段が無さそう。

やむを得ず書いた。

def list_get(lst, index, error):
    return lst[index] if len(lst) > index else error
>>> list_get(lst, 5, error_str)
'Kazumi'
>>> list_get(lst, 6, error_str)
'Is that number a repdigit?'