#python #json #key #cycle
Вопрос:
Мне нужно добавить в список каждое значение от имени ключа и от возраста ключа
Но после запуска этого кода появляется:
for i in len(jsondata['name']): builtins.KeyError: 'name'
Но вы видите, что у меня есть «имя»: «хаски», и «имя»: «шиба-ину», во втором. Так что бы вы переписали?
Спасибо
import json names=[] ages=[] #f = open('jsondata.json') with open('jsondata.json') as fp: jsondata = json.load(fp) for i in len(jsondata['name']): names.add(jsondata['name']) for i in len(jsondata['age']): ages.add(jsondata['age']) f.close()
Файл Json:
{ "dogs": [ { "name": "husky", "age": "12", "urls": [ "https://www.dailypaws.com/dogs-puppies/dog-names/husky-names", "https://www.tonbridgehuskymalamutewalkinggroup.co.uk/" ] }, { "name": "shiba inu", "age": "3", "urls": [ "https://www.cryptoglobe.com/latest/2021/10/shiba-inu-shib-listed-on-trading-app-with-over-one-million-users/", "https://www.purina.co.uk/find-a-pet/dog-breeds/japanese-shibu-inu" ] } ] }
Ответ №1:
for dog in jsondata["dogs"]: names.append(dog["name"]) ages.append(dog["age"])
Ответ №2:
Вам нужно получить вложенный порядок. Как вы видите, ключ «имя» находится в разделе «собаки», тогда ключ «имя» не существует в разделе . Таким образом, вам нужно назвать это как
for i in range(len(jsondata['dogs'])): names.append(jsondata['dogs'][i]['name'])
Если вы хотите получить записи
Комментарии:
1. Поле «собаки» содержит список?
2. Как вы думаете, к какой линии?
3. Отредактировал это. Поле «собаки» действительно содержит список.
Ответ №3:
Вы должны применить цикл над dogs
элементом
name = [] age = [] data = """{ "dogs": [ { "name": "husky", "age": "12", "urls": [ "https://www.dailypaws.com/dogs-puppies/dog-names/husky-names", "https://www.tonbridgehuskymalamutewalkinggroup.co.uk/" ] }, { "name": "shiba inu", "age": "3", "urls": [ "https://www.cryptoglobe.com/latest/2021/10/shiba-inu-shib-listed-on-trading-app-with-over-one-million-users/", "https://www.purina.co.uk/find-a-pet/dog-breeds/japanese-shibu-inu" ] } ] }""" for m in data['dogs']: u_name= name.append(m.get('name','N/A')) u_age = age.append(m.get('age','N/A'))
m.get('age','N/A')
оператор будет работать как if-else
оператор в JSON