2016-05-02 12 views
0

Ich habe Probleme, meinen Code arbeiten zu lassen. Ich poste nur relevanten Teil des Codes. Datei im verwenden ist auf dieser Seite https://programmeerimine.cs.ut.ee/_downloads/lapsed.txt Erste Nummer ist Elternteil und 2nd sein Kind. Ich hatte auch verschiedene Felder, die Zahlen in Namen übersetzten. (Ich habe die Liste ID_name es funktioniert i geprüft) Dieser andere Teil des Codes funktioniert gut, außer wenn ich versuche, Mehrwert zu schaffen, um bestehende Fehler key.I erhalten AttributeError: 'str' object has no attribute 'append'Python-Wörterbuch 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

Sie können Append nicht in Wörterbüchern verwenden ... append wird mit Liste verwendet ... Um neue Daten in einem Wörterbuch hinzuzufügen, müssen Sie dies tun my_dict ['itemkey'] = itemvalue –

+0

versuchen Eltern [Eltern] + kid "im else-Teil –

Antwort

1

Die Append Funktion, die Sie Referenzierung funktioniert nur für Listen: Wörterbuch [ ‚key‘] = Wert: https://docs.python.org/2/tutorial/datastructures.html

Wenn Sie einen neuen Schlüssel/Wert-Paar zu einem Wörterbuch, Verwendung hinzufügen möchten.

Sie können auch wählen: dictionary.update ({'key': value}), was gut funktioniert, um mehrere Schlüssel/Wert-Paare gleichzeitig hinzuzufügen.

0

Sie benötigen einen list initialisieren anstatt nur das Objekt hinzuzufügen. Ändern Sie dies:

parents[parent]=kid 

dazu:

parents[parent] = [kid] 

Dies gibt Ihnen einen list, an die Sie append() neue Objekte, anstatt nur einen String.

+0

" parent "muss als Liste am Anfang eingestellt werden, anstatt" parent = part [0] ", sollte es" parent = [part [0]] "sein und dann können Sie Verwenden Sie geeignete Listenmethoden wie '.append'. –

+0

Der Fehler kommt am 'append()', weil 'kid' ein String ist und' append() 'nicht für Strings funktioniert. "Eltern" ist nur der Schlüssel. In der Tat, wenn Sie versuchen, "Eltern" zu einer "Liste" zu setzen, können Sie es nicht als Schlüssel verwenden. "Eltern" ist das Wörterbuch, "Eltern" ist der Schlüssel, und die Werte sollen eine Liste von "Kid" sein. – TigerhawkT3