2016-04-26 14 views
1

Ich habe an einem kleinen Kontakt Importeur gearbeitet, und jetzt versuche ich, einen Block zu implementieren, der automatisch das Format der Ausgabedatei basierend auf der Anzahl der zu importierenden Kontakte auswählt.Auswahl von Werten aus der Liste im Wörterbuch Python

führt jedoch jedesmal, wenn es in den Fehlern:

KeyError: 'q' 

Ich kann nicht für das Leben von mir herauszufinden, warum dies geschieht, und ich würde jede mögliche Hilfe angeboten lieben.

Meine Vorstellung von Skalierbarkeit ist, dass das Wörterbuch personDict würde das Format personDict = {nameid:[name,email]} sein, aber nichts funktioniert.

Jede Hilfe ist gute Hilfe,

Dank

def autoFormat(): 
    while True: 
     name = input("Enter the person's name \n") 
     if name == "q": 
      break 
     email = input("Enter the person's email \n") 
     personDict[name] = [name, email] 

    if len(personDict) <= 10: 
     keyValue = personDict[name] 
     for keyValue in personDict: 
      for key, value in personDict.iteritems(): 
       combined = "BEGIN:VCARD\nVERSION:4.0\n" + "FN:" + name + "\n" + "EMAIL:" + email + "\n" + "END:VCARD" 
       fileName = name + ".vcl" 
       people = open(fileName, 'a') 
       people.write(combined) 
       people.close() 
       print("Created file for " + name) 

autoFormat() 

Antwort

1

Das Hauptproblem, dass ist, wenn der Benutzer "q" Code verlässt die while Schleife mit name „q“ als Wert zu halten. So sollten Sie diese nutzlose Zeile entfernen:

keyValue = person_dict [name]

Da es kein Element mit Schlüssel "q" in Ihrem Wörterbuch ist.

Auch im Export Teil schreiben Sie in Datei-Werte, die sich von denen mit denen Sie Schleife mit. Ihr Code wird:

if len(personDict) <= 10: 
    for name, email in personDict.values(): 
      combined = "BEGIN:VCARD\nVERSION:4.0\n" + "FN:" + name + "\n" + "EMAIL:" + email + "\n" + "END:VCARD" 
      fileName = name + ".vcl" 
      people = open(fileName, 'a') 
      people.write(combined) 
      people.close() 
      print("Created file for " + name) 
Verwandte Themen