Python 使用嵌套字典获取类型错误

Python 使用嵌套字典获取类型错误,python,Python,我正在编写一个简单的程序,我的嵌套字典值返回一个整数并得到一个KeyError时遇到了这个问题 我尝试过将密钥初始化为字典,但它似乎仍然不起作用 people = { 1: { 'name': 'John', 'age': '27', 'sex': 'Male' }, 2: { 'name': 'Marie', 'age': '22', 'sex': 'Female' }

我正在编写一个简单的程序,我的嵌套字典值返回一个整数并得到一个
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'}}

尽管这对我来说似乎是有效的。

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

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'])
这是一个错误。试着这样做:

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

这将为您提供预期的输出,因为
todays\u items
是字典,
item
是外部级别的键,
home
是嵌套字典的键。这将打印
John
Marie

默认情况下,通过字典的for循环将返回键(因此在
人员
1
2
的情况下)。如果需要,您可以对todays_names.values()`中的项使用
。或者两者兼得:
对于key,value in some_dict.items()
当您在字典中使用有序数字作为键时,这标志着使用
列表可能是一个更好的选择。谢谢,这很有效,我对python相当陌生,所以我错过了该语法。