如何以可移植的方式使用Python映射JSON值

如何以可移植的方式使用Python映射JSON值,python,json,mapping,Python,Json,Mapping,我有一个JSON对象,如下所示,是从文件加载的。我想为所有CityName值解析JSON对象 { "CityList": [ { "Continent": "USA", "CityName": "Chicago" }, { "Continent": "Russia", "CityName": "Moscow" },

我有一个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”变量

 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”。我知道问题是什么,但不幸的是我不知道答案
修理非常感谢您的帮助。

您的数据是
CityList
键下的目录列表,因此您应该首先迭代列表的子目录,然后输出
CityName
键的值:

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

要获取CityName,您可以循环查看
数据['CityList']
,因为它是一个列表:

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

提示:您的字典
data
只有一个键,“CityList”,其值为
[{'Continent':'USA','CityName':'Chicago',{'Continent':'rusia','CityName':'Moscow'},{'Continent':'Asia','CityName':'Beijing'},{'Continent':'Australia','CityName':'Sydney'}