首页 > 解决方案 > 使用嵌套字典获取类型错误

问题描述

我正在开发一个简单的程序,我的嵌套字典值返回一个整数并得到一个KeyError.

我已经尝试将密钥初始化为字典,但它似乎仍然不起作用。

people = {
    1: {
        'name': 'John',
        'age': '27',
        'sex': 'Male'
    },
    2: {
       'name': 'Marie', 
       'age': '22', 
       'sex': 'Female'
    }
}

todays_names = {}

x=1

for item in people:
    home = people[x]['name']
    todays_names[x] = {}
    todays_names[x]['home'] = home
    x += 1

print(todays_names)

for item in todays_names:
    print(item['home'])


我希望它为每个项目打印 John 和 Marie,但事实并非如此。当我打印字典时,它看起来像:

 {1: {'home': 'John'}, 2: {'home': 'Marie'}}

虽然这对我来说似乎有效。

标签: python

解决方案


问题是您没有正确访问嵌套字典。这一行:

for item in todays_names:
    print(item['home'])

抛出错误,因为 item 是外部字典的键,而 home 是嵌套字典的键。您的打印语句如下所示:

# item = 1
print(1['home'])

这是抛出一个错误。尝试这样的事情:

for item in todays_names:
    print(todays_items[item]['home'])

这应该会给您预期的输出,因为todays_items它是字典,item是外层home的键并且是嵌套字典的键。这将打印JohnMarie.


推荐阅读