Python新手求助:字典取值赋值代码报错问题
问题分析与修正
核心错误点
嵌套字典访问错误:
你写的people["alice"["length"]]完全不符合字典访问逻辑。"alice"是字符串,"alice"["length"]试图用字符串"length"作为索引去访问它,而字符串的索引只能是整数(比如"alice"[0]取第一个字符),这直接触发了TypeError: String indices must be integers。正确的嵌套字典访问方式是先取外层字典的"alice"键(得到内层字典),再取内层字典的"length"键,即people["alice"]["length"]。赋值运算符误用:
=+1是将变量赋值为正1,不是对现有值的累加操作。如果要实现“现有值加1”,需要用+=1。
另外,你的初始数据中Alice的头发长度是5,即使修正运算符,加1后也只会得到6,和你期望的20不符,推测你可能是想直接设置Alice的长度为20,或是想基于Bob的长度(19)加1赋值给Alice,以下是对应修正方案:
修正方案1:直接设置Alice的长度为20
#! python3 people = { "alice": { "style": "bun", "length": 5}, "bob":{ "style": "ponytail", "length": 19} } # 直接更新Alice的头发长度为20 people["alice"]["length"] = 20 # 获取更新后的值 alice_hair_length = people["alice"]["length"] print("Alice's hair length is " + str(alice_hair_length))
修正方案2:基于Bob的长度加1赋值给Alice
#! python3 people = { "alice": { "style": "bun", "length": 5}, "bob":{ "style": "ponytail", "length": 19} } # 把Bob的长度加1后赋值给Alice people["alice"]["length"] = people["bob"]["length"] + 1 alice_hair_length = people["alice"]["length"] print("Alice's hair length is " + str(alice_hair_length))
修正方案3:对Alice的长度累加至20(修改初始值)
如果你的初始需求是让Alice的长度从19加1到20,只需调整初始数据并使用累加运算符:
#! python3 people = { "alice": { "style": "bun", "length": 19}, # 修改初始长度为19 "bob":{ "style": "ponytail", "length": 19} } # 累加1,长度变为20 people["alice"]["length"] += 1 alice_hair_length = people["alice"]["length"] print("Alice's hair length is " + str(alice_hair_length))
内容的提问来源于stack exchange,提问作者Mariana_the_Mermaid
相关产品推荐
相关产品推荐

