You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:字典取值赋值代码报错问题

问题分析与修正

核心错误点

  1. 嵌套字典访问错误:
    你写的people["alice"["length"]]完全不符合字典访问逻辑。"alice"是字符串,"alice"["length"]试图用字符串"length"作为索引去访问它,而字符串的索引只能是整数(比如"alice"[0]取第一个字符),这直接触发了TypeError: String indices must be integers。正确的嵌套字典访问方式是先取外层字典的"alice"键(得到内层字典),再取内层字典的"length"键,即people["alice"]["length"]。

  2. 赋值运算符误用:
    =+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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:31:18