Python (json) Как добавить каждый ключ с одинаковым именем в список

#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