2010-11-17 19 views
16

Si j'ai:Quelle exception est levée lorsque la clé n'est pas trouvée dans le dictionnaire Python?

map = { 'stack':'overflow' } 

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

N'a pas pu trouver sur le web. = (

+3

Où avez-vous regardé? La page à http://docs.python.org/library/stdtypes.html dit « d [key] - Retour l'élément de clé d avec une touche lève KeyError si la clé est pas sur la carte. ». – bgporter

+0

J'ai fondamentalement tapé "exception du dictionnaire Python" dans Bing et abandonné après les 3 premiers liens. Je pensais que je pourrais obtenir une réponse plus rapide sur SO. = p Mais merci d'inclure le lien de référence ici. – sivabudh

+2

Vous devez utiliser la console interactive pour afficher les résultats de ce type. – jsbueno

Répondre

29
KeyError 

si vous le faites sur la console sans le bloc try vous dira à

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

Merci. Je l'ai essayé sur la console avant de poster, mais je ne savais pas que le "KeyError" était le type Exception réel! Noob-ness. Lol. – sivabudh

+0

Choisissez votre réponse car votre suggestion de console m'a fait réaliser que KeyError était le nom d'exception. – 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' 
>>> 

Ainsi, une conjecture sauvage peut-être ... un KeyError?

4

Son appelé 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. Essayez-le! Hou la la! –