Python, выполняющий итерацию по json-массиву словаря

#python #json #loops #python-requests

#python #json #циклы #python-запросы

Вопрос:

Я прошу прощения за довольно простой вопрос, но, похоже, мне трудно перебирать что-либо, кроме ключей в этом массиве / словаре JSON.

 import requests

villager_url = requests.get("https://acnhapi.com/v1/villagers")
villagers = villager_url.json()

for villager in villagers:
    print(villager)
 

запрос настроен довольно просто, и прямо сейчас я могу получить список ключей, но я изо всех сил пытаюсь распечатать все, что содержится в массиве, который составляет значение словаря.

 {
"ant00": {
"id": 1,
"file-name": "ant00",
"name": {
"name-USen": "Cyrano",
"name-EUen": "Cyrano",
"name-EUde": "Theo",
"name-EUes": "Cirano",
"name-USes": "Cirano",
"name-EUfr": "Cyrano",
"name-USfr": "Cyrano",
"name-EUit": "Cirano",
"name-EUnl": "Cyrano",
"name-CNzh": "阳明",
"name-TWzh": "陽明",
"name-JPja": "さくらじま",
"name-KRko": "사지마",
"name-EUru": "Сирано"
},
"personality": "Cranky",
"birthday-string": "March 9th",
"birthday": "9/3",
"species": "Anteater",
"gender": "Male",
"subtype": "B",
"hobby": "Education",
"catch-phrase": "ah-CHOO",
"icon_uri": "https://acnhapi.com/v1/icons/villagers/1",
"image_uri": "https://acnhapi.com/v1/images/villagers/1",
"bubble-color": "#194c89",
"text-color": "#fffad4",
"saying": "Don't punch your nose to spite your face.",
"catch-translations": {
"catch-USen": "ah-CHOO",
"catch-EUen": "ah-CHOO",
"catch-EUde": "schneuf",
"catch-EUes": "achús",
"catch-USes": "achús",
"catch-EUfr": "ATCHOUM",
"catch-USfr": "ATCHOUM",
"catch-EUit": "ett-CCIÙ",
"catch-EUnl": "ha-TSJOE",
"catch-CNzh": "有的",
"catch-TWzh": "有的",
"catch-JPja": "でごわす",
"catch-KRko": "임돠",
"catch-EUru": "апчхи"
}
}
}
 

выше приведен json первых двух пар ключ-значение. Я просто пытаюсь иметь возможность возвращать значение, скрытое в части значений словаря. В основном я хочу вернуть такие вещи, как имя пользователя или, возможно, пару данных из значений, с конечной целью создать базовое веб-приложение, в котором вам понравится, если вы добавите свой день рождения, и получите пару с сельским жителем или что-то подобное. Я уверен, что для многих из вас это не проблема, поэтому я приношу свои извинения. Заранее благодарю вас.

Ответ №1:

Может быть, это поможет вам:

 import requests

villager_url = requests.get("https://acnhapi.com/v1/villagers")
villagers = villager_url.json()

dct = {villagers[k]["name"]["name-EUen"]:villagers[k]["birthday-string"] for k in villagers.keys()}

print(dct)
 

Комментарии:

1. Кажется, это работает, спасибо. если бы я хотел просмотреть этот процесс, чтобы увидеть, как он работает, что я должен проверить? Я думал, что это похоже на понимание dict, но это не кажется правильным.

2. @cerealfordinner Да, это понимание dict.