无法使用循环访问字典键,我得到一个TypeE

2024-06-24 13:46:08 发布

您现在位置:Python中文网/ 问答频道 /正文

为了举例,我把它缩短了

import json    

info = '''
{
    "people":
    {
        "rick":
        {
            "age": 24
        }
    }
}
'''

data = json.loads(info)

以下代码输出:rick(这是我所期望的)

for person in data["people"]:
    print(person)

在下面的代码中,我期望得到输出:24

for person in data["people"]:
    print(person["age"])

但是我得到:TypeError:字符串索引必须是整数

据我所知,这意味着里克被转换成了一个字符串,不再是字典了,如果是这样的话,输出24的正确方法是什么

谢谢


Tags: 字符串代码inimportinfojsonforage
3条回答

默认情况下,遍历字典会遍历其,因此person是一个字符串,即键的名称。您可以将第二个for循环更改为:

for person in data['people'].values():
    print(person['age'])

dict.values()生成包含的值,这里是字典。另外,您可能对dict.items()感兴趣:

for name, person in data['people'].items():
    print(name, person['age'])
# rick, 24

第一个元素是键(名称),第二个元素是关联值(字典)

或者可以使用键、值对:

for person,value in info["people"].items():
    print(value["age"])

您需要迭代内部字典的valuesdata["people"]本身就是一本字典

for person in data["people"].values():  
    print(person["age"])

# 24

相关问题 更多 >