2016-04-26 7 views
1

Я работал над небольшим импортером контактов, и теперь я пытаюсь реализовать блок, который автоматически выбирает формат выходного файла на основе количества импортируемых контактов.Выбор значений из списка в словаре python

Однако каждый раз, когда это приводит к ошибке:

KeyError: 'q' 

Я не могу понять, за жизнь мне, почему это происходит, и я хотел бы любую помощь предложил.

Мое представление о масштабируемости заключается в том, что словарь personDict будет иметь формат personDict = {nameid:[name,email]}, но ничего не работает.

Любая помощь хорошая помощь,

Благодаря

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() 

ответ

1

Основная проблема заключается в том, что, когда пользователь "q" код покидает while цикл с name сохраняя «д» в качестве значения. Таким образом, вы должны удалить эту бесполезную строку:

KeyValue = person_dict [имя]

Поскольку нет элемента с ключом "q" в словаре.

Также в части экспорта вы записываете значения файлов, отличные от тех, с которыми вы работаете. Ваш код будет:

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) 
Смежные вопросы