2016-05-02 5 views
0

У меня проблемы с созданием моего кода. Я размещаю только соответствующую часть кода. Файл im using есть на этой странице https://programmeerimine.cs.ut.ee/_downloads/lapsed.txt Первое число является родительским и вторым его ребенком. У меня также была другая подача, которая переводила номера в имена. (Я сделал список id_name она отлично работает я проверил) Это другая часть кода работает отлично, за исключением, когда я пытаюсь добавить значение к существующим key.I получить ошибку AttributeError: 'str' object has no attribute 'append'Python dictionary append

for line in f: 
    part=line.split(" ") 
    parent=part[0] 
    kid=part[1].strip() 
    for el in ID_name: 
     if parent == el[0]: 
      parent=el[1] 

     if kid == el[0]: 
      kid=el[1] 
    if parent not in parents.keys(): 
     parents[parent]=kid 
    else: 
     parents[parent].append(kid) 
+1

Вы не можете использовать append в словарях ... append используется со списком ... Чтобы добавить новые данные в словарь, вам нужно сделать это my_dict ['itemkey'] = itemvalue –

+0

try 'parents [parent] + kid' в части else –

ответ

1

Функция Append вы ссылки работает только для списков: https://docs.python.org/2/tutorial/datastructures.html

Если вы хотите добавить новую пару ключ/значение из словаря, использование: словарь [ «ключ»] = значение.

Вы также можете выбрать: dictionary.update ({'key': value}), который отлично подходит для одновременного добавления нескольких пар ключ/значение.

0

Вы должны инициализировать list а не просто добавить объект. Изменить это:

parents[parent]=kid 

к этому:

parents[parent] = [kid] 

Это даст вам list, к которому вы можете append() новые объекты, а не только строки.

+0

'parent' должен быть установлен как список в самом начале, а не' parent = part [0] ', он должен быть' parent = [part [0]] ', а затем вы можете используйте соответствующие методы списка, такие как '.append'. –

+0

Ошибка возникает в 'append()', потому что 'kid' является строкой, а' append() 'не работает с строками. «parent» - это только ключ. На самом деле, если вы попытаетесь установить 'parent' в' list', вы не сможете использовать его как ключ вообще. «родители» - это словарь, «родитель» - это ключ, а значения - список «малыш». – TigerhawkT3