2017-04-13 2 views
1

So habe ich ein Basisverzeichnis mit dieser Struktur.Wie auf verschachteltes Verzeichnis in Python zugreifen?

movies = { 
    'Mary': { 
     'Big': 
     { 
     'Watched': 1, 
     'Rating': 'G' 
     } 
    }, 
    'Frank': { 
     'Cinderella': 
     { 
     'Watched': 1, 
     'Rating': 'G' 
     } 
    } 
} 

Und ich möchte alle Filme für einen bestimmten Benutzernamen durchlaufen. Sowie mehr hinzufügen, wenn ich sie brauche. Das heißt ich werde sagen "Mary". Wie listet ich alle Filme mit der Bewertung und unter diesem Film für jeden Film auf? Wie würde ich einen neuen Film hinzufügen?

Ich bin irgendwie neu in Python und suchte die vorherigen Fragen, aber diese Wörterbücher waren viel komplizierter als diese, weshalb ich frage.

Edit:

def displaymembers(): 
    for key in movies: 
     print("%s" % key) 

Bisher ist dies, wie ich die Leute anzeigen, aber nicht sicher, wie innerhalb der Schlüssel alle Filme zugreifen?

+0

Was haben Sie bisher versucht? –

+0

@ RobGwynn-Jones Etwas sehr einfaches nur:/ – User12131111151

+0

Edited Post für Sie – User12131111151

Antwort

0

Sie können für loops verschachteln, um die iterate durch die inneren dicts fortzusetzen. Sie können dict.items verwenden, um sowohl den Schlüssel als auch seinen Wert zu erhalten.

for name, movie_dict in movies.items(): 
    print(name) 
    for movie_name, movie_stats in movie_dict.items(): 
     print("{:<5}{}".format('', movie_name)) 
     for key, value in movie_stats.items(): 
      print("{:<10}{}, {}".format('', key, value)) 

Andernfalls können Sie dies mit nur dem Schlüssel tun und es zusammenketten, um die Werte für jeden Schlüssel zu erhalten. dict[key1][key2][keyn]

for name in movies: 
    print(name) 
    for movie_name in movies[name]: 
     print("{:<5}{}".format('', movie_name)) 
     for key in movies[name][movie_name]: 
      print("{:<10}{}, {}".format('', key, movies[name][movie_name][key])) 

# Output 
Mary 
    Big 
      Watched, 1 
      Rating, G 
Frank 
    Cinderella 
      Watched, 1 
      Rating, G 

Das Problem bei diesem Ansatz ist, dass Sie die gleiche Struktur in Ihrem movies dict haben muss, wenn es einen Fall gibt, wo einige Schlüssel keinen Wert eines Wörterbuchs haben könnte, sagen Mary eine Liste oder Somethings hat anstelle eines Wörterbuchs als Wert, dann müssen Sie diesen Fall behandeln. Wenn Ihr Wörterbuch immer der Struktur entspricht, die Sie angezeigt haben, sollten Sie sich keine Gedanken darüber machen.

+0

Wie würde ich einen neuen Film für eine bestimmte Person hinzufügen? Zusammen mit seinem beobachteten Wert und dem Rating-Wert? – User12131111151

+0

Wie im zweiten Beispiel gezeigt, können Sie es entlang so 'Filme' ['Mary'] ['New Movie'] = {'Watched': 1, 'Bewertung': 'G'} ' –

+0

Yup! Ich habe es herausgefunden. Ich danke dir sehr! :) – User12131111151

Verwandte Themen