编写一个for循环,打印1个嵌套字典的键

问题描述 投票:1回答:3

1>创建一个嵌套字典,其中包含您在今年秋季和春季学期中所做主题的主题编号。换句话说,你应该有一个带有2个键的字典,“Autumn”和“Spring”,与这些键相关的值本身应该是字典,其中键是主题编号,值是主题的名称。

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'
python loops dictionary for-loop nested
3个回答
2
投票

使用.中的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

0
投票

试试这个

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)

0
投票

这个怎么样 ?

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]}
© www.soinside.com 2019 - 2024. All rights reserved.