2010-11-17 22 views
16

Si tengo:¿Qué excepción se produce cuando la clave no se encuentra en el diccionario de Python?

map = { 'stack':'overflow' } 

try: 
    map['experts-exchange'] 
except:      <--- What is the Exception type that's thrown here? 
    print('is not free') 

No se pudo encontrar en la web. = (

+3

¿Dónde luces? La página en http://docs.python.org/library/stdtypes.html dice "d [key] - Devuelve el elemento d con la tecla clave. Levanta un KeyError si la clave no está en el mapa." – bgporter

+0

Básicamente escribí "excepción de diccionario de Python" en Bing y abandoné después de los primeros 3 enlaces. Pensé que podría obtener una respuesta más rápida en SO. = p Pero gracias por incluir el enlace de referencia aquí. – sivabudh

+2

Debe usar la consola interactiva para ver resultados como este. – jsbueno

Respuesta

29
KeyError 

si lo hace en la consola sin el bloque try le dirá a usted

>>> a = {} 
>>> a['invalid'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
KeyError: 'invalid' 
>>> 
+0

Gracias. Lo probé en la consola antes de publicarlo, pero no sabía que el "KeyError" era el tipo de Excepción real. Noob-ness. Lol. – sivabudh

+0

Elegí tu respuesta porque la sugerencia de tu consola me hizo darme cuenta de que KeyError era el nombre de la excepción. – sivabudh

3
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) 
[GCC 4.4.5] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> map = { 'a' : 'b' } 
>>> print map['c'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
KeyError: 'c' 
>>> 

Así que una suposición podría ser ... un KeyError?

4

Se llama KeyError

>>d={1:2} 

>>d[2] 

Traceback (most recent call last): 
    File "<stdin>", line 1, in ? 
KeyError: 2 
7

KeyError.

>>> x = {'try': 1, 'it': 2} 
>>> x['wow'] 

Traceback (most recent call last): 
    File "<pyshell#3>", line 1, in <module> 
    x['wow'] 
KeyError: 'wow' 
+0

+1. ¡Intentalo! ¡Guauu! –

Cuestiones relacionadas