2016-12-10 30 views
1
def CreateDataBaseByActor(file): 
    dataBase = dict() 
    set = {} 
    f = open(file,"r") 
    for line in f: 
     set = line.split(', ') 
     for movie in set[1:]: 
      dataBase[movie] = set[0] 
    return dataBase 

Ich habe eine Datei, die jede Zeile durch das Format geschrieben: actor_name, movie1, Film2, Film3 ... Beispiel:Addieren eines Wertes zu einem Satz in einem Wörterbuch

  • Sylvester Stallone, Rocky, Rambo, Assassins

  • Julianne Moore, Assassins, Hannibal

    Das Problem ist, dass, wenn ich versuche, einen Film zu einem anderen Schauspieler Namen hinzufügen (zum Beispiel: in der ersten Zeile hat der Schlüssel - Assassins - den Wert Sylvester Stallone, und in der zweiten Zeile Wert von - Assassin - ist statt hinzugefügt)

+0

Was denken Sie 'set = line.split (‚‘)' ist zu tun zu dem früher definierten 'set = {}'? Plus-Sets haben keine Indizes und unterstützen kein Slicen, falls Sie sie auf diese Weise verwenden möchten. –

+1

'set = {}' erstellt keinen Satz. Es erstellt ein Wörterbuch namens set. Es ist keine gute Idee, diesen Namen trotzdem zu verwenden. – ayhan

Antwort

0

ersetzt Angenommen, Sie möchten ein Wörterbuch zurück, die Filmtitel auf eine Liste von Akteuren innerhalb der einzelnen Karten (die aus dem Namen der Funktion nicht klar ist), dann sollte dieser Code TU es für dich. (Beachten Sie, dass ich die Variable geändert set genannt fields genannt werden, da es keine gute Idee, Variablen nach Arten zu nennen.)

def CreateDataBaseByActor(file): 
    dataBase = dict() 
    f = open(file, "r") 
    for line in f: 
     fields = line.split(', ') 
     actor = fields[0] 
     for movie in fields[1:]: 
      dataBase.setdefault(movie, []).append(actor) 
    return dataBase 
Verwandte Themen