如何使用Python以可迭代的方式映射JSON值

时间:2019-04-13 04:31:09

标签: python json mapping

我有一个从文件加载的JSON对象,如下所示。我想为所有CityName值解析JSON对象。

{
    "CityList": [
        {
            "Continent": "USA", 
            "CityName": "Chicago"
        }, 
        {
            "Continent": "Russia", 
            "CityName": "Moscow"
        }, 
        {
            "Continent": "Asia", 
            "CityName": "Beijing"
        }, 
        {
            "Continent": "Australia", 
            "CityName": "Sydney"
        }
    ]
} 

我正在使用Python脚本通过FOR循环从JSON中提取CityName元素。由于某些其他原因,我想在下游使用“名称”变量。

 name=Chicago
name=Moscow
name=Beijing
name=Sydney

到目前为止,我已经尝试了以下方法。

with open('city_names.json','r') as read_file:
    json_data = read_file.read()
data = json.loads(json_data)
for k,v in data.items():
    name=v['CityName']
    print(name)

在运行上述命令一段时间后,我一直收到此错误“ TypeError:列表索引必须是整数,而不是 str“。我知道问题出在哪里,但不幸的是,我不知道 固定。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

要获取CityName,您可以遍历data['CityList'],因为它是一个列表:

for v in data['CityList']:
      name=v['CityName']
      print(name)

答案 1 :(得分:0)

您的数据是CityList键下的字典列表,因此您应该首先遍历列表的子字典,然后输出CityName键的值:

for d in data['CityList']:
    print(d['CityName'])