#python #json #mapping
#python #json #сопоставление
Вопрос:
У меня есть объект JSON, как показано ниже, который я загружаю из файла. Я хочу проанализировать объект JSON для всех значений CityName.
{
"CityList": [
{
"Continent": "USA",
"CityName": "Chicago"
},
{
"Continent": "Russia",
"CityName": "Moscow"
},
{
"Continent": "Asia",
"CityName": "Beijing"
},
{
"Continent": "Australia",
"CityName": "Sydney"
}
]
}
Я использую скрипт Python для извлечения элемента CityName из JSON such через цикл FOR. Я хочу использовать переменную «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». Я знаю, в чем проблема, но, к сожалению, я не знаю
, как это исправить. Помощь действительно ценится.
Комментарии:
1. Подсказка: в вашем словаре
data
есть только один ключ, «cityList», значение которого равно[{'Continent': 'USA', 'CityName': 'Chicago'}, {'Continent': 'Russia', 'CityName': 'Moscow'}, {'Continent': 'Asia', 'CityName': 'Beijing'}, {'Continent': 'Australia', 'CityName': 'Sydney'}]
.
Ответ №1:
чтобы получить CityName, вы можете выполнить цикл, data['CityList']
поскольку это список:
for v in data['CityList']:
name=v['CityName']
print(name)
Ответ №2:
Ваши данные представляют собой список dicts под CityList
ключом, поэтому сначала вы должны выполнить итерацию по подразделам списка, а затем вывести значение CityName
ключа:
for d in data['CityList']:
print(d['CityName'])