python - 使用嵌套字典获取类型错误
问题描述
我正在开发一个简单的程序,我的嵌套字典值返回一个整数并得到一个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'])
这应该会给您预期的输出,因为todays_items
它是字典,item
是外层home
的键并且是嵌套字典的键。这将打印John
和Marie
.
推荐阅读
- apache - 如何在 Kubernetes 中重定向 Apache 日志
- vba - 了解 for 循环 VBA 中的错误处理问题
- c++11 - 生成错误:构建 mongo c 驱动程序 1.17.3 时出现未知的 CMake 命令“set_dist_list”
- r - 如何在R中使用ggplot2“增加”x标签(日期)的数量
- vue.js - 如何在 Breeze 中使用 Laravel sanctum
- python - 如何从二进制字段中查找文件 mimetype
- azure - 数据工厂中的自定义验证错误报告
- r - 重命名向量中的所有列
- php - InterAkt KT 函数的 PHP 会话 ID 问题
- node.js - Node.js:当我尝试启动我的应用程序时,我的服务器请求 hot-update.js