2016-07-06 5 views
-3

Der betreffende Code ist here on Github. Im Prinzip funktioniert alles außer der addClient()-Funktion, die ein SRE_Match-Objekt übernimmt und analysiert und die extrahierten Variablen in einem dict einem Schlüssel in einem global definierten dict zuordnet. Wenn jedoch nach dem Erstellen dieses neuen Schlüssels das mit diesem Schlüssel verknüpfte Element gedruckt wird, wird ein KeyError ausgelöst, der besagt, dass der Schlüssel nicht definiert ist! Ich habe keine Ahnung, was damit passiert.Python verschachtelte Wörterbuchzuordnung funktioniert nicht

Der Code für AddClient():

def addClient(client, info,medium): 
if info: 
    info = info.group(0).split(' ') 
    if medium == 'text': 
     db['clients']['text'][client] = {'number':info[0],'os':info[1]} 
    elif medium == 'email': 
     db['clients']['email'][client] = {'address':info[0],'os':info[1]} 
    elif medium == 'pm': 
     db['clients']['pm'][client] = {'os':info[0]} 
print(db['clients'][medium][client]) 
+0

Sie benötigen ein in sich geschlossenes Beispiel zu zeigen, um das Problem zu demonstrieren. – BrenBarn

+0

Bitte geben Sie den relevanten Code in Ihre Frage ein und zeigen Sie an, welche Schritte Sie bis jetzt unternommen haben. –

+0

Dann trifft 'medium' keinen Ihrer drei Fälle, oder' info' ist falsch. Da Sie Pfade durch die Funktion haben, die dazu führen können, dass die Schlüssel nicht gesetzt werden, Sie aber trotzdem versuchen, sie zu drucken, scheint es sehr wahrscheinlich, dass Sie einen dieser Pfade treffen. – TessellatingHeckler

Antwort

0

Okay, sollte die Antwort auf der Hand haben. Wie TesselatingHeckler vorgeschlagen, erscheint der Fehler auf, wenn info nicht wahr ist, und kann wie folgt festgesetzt:

def addClient(client, info,medium): 
if info: 
    info = info.group(0).split(' ') 
    if medium == 'text': 
     db['clients']['text'][client] = {'number':info[0],'os':info[1]} 
    elif medium == 'email': 
     db['clients']['email'][client] = {'address':info[0],'os':info[1]} 
    elif medium == 'pm': 
     db['clients']['pm'][client] = {'os':info[0]} 
    print(db['clients'][medium][client])