Делаем вложенный словарь менее сложным - PullRequest
0 голосов
/ 07 февраля 2020

С трудностями при попытке получить результаты моего словаря распечатайте правильно, и без всех запутанных циклов 'for'.

my_dict = [
            {0:
                  {"Artist": "Pat Metheny",
                        "Albums": {"Bright Size Life": {"Year": "1977"},
                                   "Watercolours": {"Year": "1979"}}
                   }},

              {1:
                  {"Artist": "John Coltrane",
                    "Albums": {"Giant Steps": {"Year": "1964"}}
                   }},

              ]

for x in my_dict:
    y = x.values()
    #print("y is ", y)
    for Artist in y:
        for Artist_name in Artist:
            z = (Artist.items())

        for the_name, artist in z:
            print("Artist: ", artist)

        for album_name in artist:
            print("album :" ,album_name)
            a = artist.items()
        #print("a is ",a)
        for the_year, year_name in a:
                print("Year: ", year_name)

вывод, который также печатает слишком много информации, и неверный год , это:

Artist:  Pat Metheny
Artist:  {'Bright Size Life': {'Year': '1977'}, 'Watercolours': {'Year': '1979'}}
album : Bright Size Life
album : Watercolours
Year:  {'Year': '1977'}
Year:  {'Year': '1979'}
Artist:  John Coltrane
Artist:  {'Giant Steps': {'Year': '1964'}}
album : Giant Steps
Year:  {'Year': '1964'}

1 Ответ

1 голос
/ 07 февраля 2020

Вот один из способов сделать это:

for d in my_dict:
    for entry in d.values():
        print('Artist:', entry['Artist'])
        for album, metadata in entry['Albums'].items():
            year = metadata['Year']
            print(f'{album} ({year})')
        print()

Это выводит:

Artist: Pat Metheny
Bright Size Life (1977)
Watercolours (1979)

Artist: John Coltrane
Giant Steps (1964)
...