Esto es un truco bastante útil del Python Cookbook, para cuando necesitamos extraer un dato de una lista si el subíndice es válido, y evitar una excepción en caso de que no lo sea.

Si creamos una lista con 5 elementos e intentamos acceder al elemento con el subíndice  5,  el intérprete  da un IndexError:


>>> lst = ['uno', 2, 'cuatro', 'six',7]
>>> lst
['uno', 2, 'cuatro', 'six', 7]
>>> lst[1]
2
>>> len(lst)
5
>>> lst[5]
Traceback (most recent call last):
File "", line 1, in
IndexError: list index out of range

En el caso de un diccionario, obtenemos un KeyError:

>>> dict = {1:'uno', 2:'dos'}
>>> dict[1]
'uno'
>>> dict[3]
Traceback (most recent call last):
File "", line 1, in
KeyError: 3

Los diccionarios tienen un método llamado get, que nos sacan del apuro:

>>> dict.get(3,”Este diccionario no tiene el valor 3″)
‘Este diccionario no tiene el valor 3’

De esta forma evitamos que un error detenga la ejecución del programa.

En el caso de las listas, no hay un función built-in, pero la podemos definir:

>>> def list_get(L, i, v=None):
...    if -len(L) <= i < len(L): return L[i]

...    else: return v ...

>>> list_get(L,2)
'cuatro'
>>> list_get(L,6,'mensaje de error')
'mensaje de error'

Comentarios

  • Si L tiene 3 elementos los índices válidos son -3,-2,-1,0,1,2,
Anuncios