Напишите цикл for, который печатает ключи 1 вложенного словаря.

1> Создайте вложенный словарь, содержащий номера предметов, которые вы изучаете в этом году в осеннем и весеннем семестрах. Другими словами, у вас должен быть словарь с двумя ключами, «Осень» и «Весна», и значения, связанные с этими ключами, сами должны быть словарями, где ключи — это номера предметов, а значения — имена предметов.

2> Напишите цикл for, который выводит номера предметов, которые вы изучили осенью.

это то, что у меня есть

my_subjects = {"Autumn": {37315:"Data", 34567:"Sci"}, "Spring": {23456:"Eng", 45879:"Math"}}

for season, season.subjects in my_subjects.items():
    print("\n Autumn Subject Numbers", season)

    for key in season.subjects:
        print(key)

но получаю ошибку

AttributeError                            Traceback (most recent call last)
<ipython-input-208-b1fceae351e6> in <module>()
      5 
      6 
----> 7 for season, season.subjects in my_subjects.items():
      8     print("\n Autumn Subject Numbers", season)
      9 

AttributeError: 'str' object has no attribute 'subjects'

person Will Lobb    schedule 18.09.2018    source источник
comment
Вам нужны цифры, обозначающие занятия, которые вы посещали каждый сезон? или количество занятий, которые вы посещали каждый сезон?   -  person vash_the_stampede    schedule 18.09.2018


Ответы (3)


С помощью оператора . в season.subjects вы пытаетесь получить доступ к атрибуту subjects объекта season, у которого нет такого атрибута. Вместо этого вы должны присвоить значение второго элемента в кортежах, возвращаемых my_subjects.items(), отдельной переменной:

for season, subjects in my_subjects.items():
    if season == 'Autumn':
        print("Autumn Subject Numbers:", ', '.join(map(str, subjects)))

Это выводит:

Autumn Subject Numbers: 37315, 34567
person blhsing    schedule 18.09.2018
comment
этот код возвращает только количество предметов, а не прикрепленный к нему номер субъекта. - person Will Lobb; 18.09.2018
comment
Осенние Тематические Номера: 2 - person Will Lobb; 18.09.2018
comment
Я понимаю. Я думал, что вы хотели вывести количество предметов, когда говорили номера предметов. Тогда я обновил свой ответ. - person blhsing; 18.09.2018

Попробуйте с этим

my_subjects = {"Autumn": {37315:"Data", 34567:"Sci"}, "Spring": {23456:"Eng", 45879:"Math"}}

for season, data in my_subjects.items():
    print("\n Autumn Subject Numbers", season)

    for key in data:
        print(key)
person agrojas    schedule 18.09.2018
comment
Осенние Тематические Номера Осень 37315 34567 Осенние Тематические Номера Весна 23456 45879 - person Will Lobb; 18.09.2018

Как насчет этого ?

new_dict = {}

for k, v in my_subjects.items():
    for x, z in v.items():
        if k not in new_dict:
            new_dict[k] = [x]
        else:
            new_dict[k].append(x)
print(new_dict)
{'Autumn': [37315, 34567], 'Spring': [23456, 45879]}
person vash_the_stampede    schedule 18.09.2018