如何在python中访问嵌套目录?

时间:2017-04-13 02:27:53

标签: python-3.x dictionary iteration

所以我有一个具有这种结构的基本目录。

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

我想迭代所有用户名的电影。以及在我需要时添加更多。那就是我会说'玛丽'。如何为每部电影列出所有带有评级并在该电影下观看的电影? 我该如何添加新电影?

我在python中对此有点新见并搜索了之前的问题,但这些字典比这个更复杂,这就是我要问的原因。

编辑:

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

到目前为止,这是我如何展示人,但不知道如何访问密钥中的所有电影?

1 个答案:

答案 0 :(得分: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 dict中必须具有相同的结构,如果某些键可能没有字典值,例如Mary有一个列表或某些东西而不是字典作为值,那么你将需要处理这种情况。如果你的词典总是遵循你所展示的结构,那么你就不应该担心它。