2017-04-13 52 views
1

所以我有一個這個結構的基本目錄。如何訪問python中的嵌套目錄?

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

而且我想遍歷給定用戶名的所有電影。以及在需要時添加更多。那就是我會說'瑪麗'。我如何列出每部電影中的所有電影,以及該電影下的評分? 如何添加新電影?

我在Python中對這個有點新,並且搜索了以前的問題,但是這些字典比這個更復雜,這就是我要問的原因。

編輯:

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

到目前爲止,這是我如何顯示的人,但不知道如何訪問密鑰中的所有電影?

+0

你到目前爲止嘗試過什麼? –

+0

@ RobGwynn-Jones只有非常基本的東西:/ – User12131111151

+0

爲您編輯的文章 – User12131111151

回答

0

您可以嵌套循環以繼續遍歷內部字典。您可以使用dict.items來獲取密鑰及其值。

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

否則,你可以用這種方法只用鍵和鏈來得到每個鍵的值。 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 

這種方法的問題是,你必須具有相同的結構,整個movies字典,如果有其中一些關鍵可能沒有一本字典的值的情況下,說Mary有一個列表或出頭而不是字典作爲價值,那麼你將需要處理這種情況。如果你的字典總是遵循你所顯示的結構,那麼你就不需要擔心它。

+0

如何爲給定的人添加新電影?隨着它的觀看價值和評級值? – User12131111151

+0

正如第二個例子所示,你可以將它鏈接起來,就像'電影['Mary'] ['New Movie'] = {'Watched':1,'Rating':'G'}' –

+0

是!我想到了。非常感謝! :) – User12131111151