Python遍历字典报TypeError: string indices must be integers如何解决
错误产生原因
你当前定义的den是存储单个用户属性的单层字典,调用den.items()遍历的时候,每次迭代返回的是单组键值对:键是属性名(比如'first_name'),值是属性对应的字符串内容(比如'den')。
你在循环里把值字符串赋值给user_info后,尝试用user_info['first_name']这种字典索引的方式操作字符串,触发了类型错误,Python的字符串仅支持整数下标取值。
解决方案
分两种场景选择对应修改方式:
场景1:仅需处理当前单个用户的信息
不需要遍历字典,直接读取对应属性即可,修改后代码:
den = { 'first_name': 'den', 'last_name': 'elc', 'age': '16', 'city': 'slovakia', } nameo = den['first_name'] namei = den['last_name'] age = den['age'] city = den['city'] print(f"\tFirst name:{nameo}") print(f"\tLast_name:{namei}") print(f"\tAge:{age}") print(f"\tCity:{city}")
场景2:后续需要扩展存储多个用户信息
你可以把外层改成嵌套字典结构,符合你原有循环的逻辑,修改后代码:
# 外层字典的键是用户名,值是对应用户的属性字典 users = { 'den': { 'first_name': 'den', 'last_name': 'elc', 'age': '16', 'city': 'slovakia', } # 后续可以在此处添加其他用户的字典 } for user, user_info in users.items(): nameo = user_info['first_name'] namei = user_info['last_name'] age = user_info['age'] city = user_info['city'] print(f"\tFirst name:{nameo}") print(f"\tLast_name:{namei}") print(f"\tAge:{age}") print(f"\tCity:{city}")
内容的提问来源于stack exchange,提问作者k77
相关产品推荐
相关产品推荐

