2017-04-13 4 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

forループをネストすると、内側のdictsを繰り返し処理できます。 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

2番目の例に示すように、 'movies ['Mary'] ['New Movie'] = {'Watched':1、 'Rating': 'G'}' –

+0

うん!私はそれを考え出した。どうもありがとうございます! :) – User12131111151

関連する問題