无法使用循环访问字典键,我收到TypeError

时间:2019-02-10 19:10:00

标签: python json dictionary

为了示例起见,我将其简短了。

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:字符串索引必须是整数

据我了解,这意味着 rick 已转换为字符串,不再是字典,如果是这样,输出 24的正确方法是什么

谢谢

3 个答案:

答案 0 :(得分:1)

您需要遍历内部字典的valuesdata["people"]本身就是字典。

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

# 24

答案 1 :(得分:1)

默认情况下,对字典进行迭代会对其进行迭代,因此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

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

答案 2 :(得分:1)

或者您可以使用键值对:

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