Path: ...!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Dominique Newsgroups: fr.comp.lang.python Subject: API, dict et interrogations... Date: Sat, 12 Aug 2023 10:07:04 +0200 Organization: A noiseless patient Spider Lines: 102 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sat, 12 Aug 2023 08:07:05 -0000 (UTC) Injection-Info: dont-email.me; posting-host="fff9f7bedbffeb904c2327f86d7e89f6"; logging-data="1334672"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+yp/kdkN9ItOHgt6/HPfKGpbNvXlcSuOY=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:sgm/zfvsPYZ8gNvs87MSHNlly88= Content-Language: fr Bytes: 4073 Bonjour, Je m'amuse avec les API, notamment celles de la NASA. J'ai bricolé un script essentiel : de qui est composé l'équipage des vaisseaux dans l'espace à l'instant où je vous écris : import requests import datetime result=requests.get("http://api.open-notify.org/astros.json").json() date=str(datetime.date.today()).split('-') date[0],date[1],date[2]=date[2],date[1],date[0] print() print('Équipage dans l\'espace ce ', '-'.join(date)) print() for i in range(len (result['people'])): print(result['people'][i]['name'], result['people'][i]['craft']) La sortie est simple : Équipage de l'ISS ce 12-08-2023 Équipage dans l'espace ce 12-08-2023 Sergey Prokopyev ISS Dmitry Petelin ISS Frank Rubio ISS Stephen Bowen ISS Warren Hoburg ISS Sultan Alneyadi ISS Andrey Fedyaev ISS Jing Haiping Tiangong Gui Haichow Tiangong Zhu Yangzhu Tiangong Bien, mais si je consulte la structure de mes données, je vois que la variable 'result' est un dict. Un simple appel de cette variable me donne ceci : {'number': 10, 'people': [{'name': 'Sergey Prokopyev', 'craft': 'ISS'}, {'name': 'Dmitry Petelin', 'craft': 'ISS'}, {'name': 'Frank Rubio', 'craft': 'ISS'}, {'name': 'Stephen Bowen', 'craft': 'ISS'}, {'name': 'Warren Hoburg', 'craft': 'ISS'}, {'name': 'Sultan Alneyadi', 'craft': 'ISS'}, {'name': 'Andrey Fedyaev', 'craft': 'ISS'}, {'name': 'Jing Haiping', 'craft': 'Tiangong'}, {'name': 'Gui Haichow', 'craft': 'Tiangong'}, {'name': 'Zhu Yangzhu', 'craft': 'Tiangong'}], 'message': 'success'} Je retrouve certes mes petits. Mais je comprends mal la structure de dict : print(result.keys()) dict_keys(['number', 'people', 'message']) J'oublie number et message qui ne m'intéressent pas. Je ne retiens que people (les équipages) : result['people'] Out[8]: [{'name': 'Sergey Prokopyev', 'craft': 'ISS'}, {'name': 'Dmitry Petelin', 'craft': 'ISS'}, {'name': 'Frank Rubio', 'craft': 'ISS'}, {'name': 'Stephen Bowen', 'craft': 'ISS'}, {'name': 'Warren Hoburg', 'craft': 'ISS'}, {'name': 'Sultan Alneyadi', 'craft': 'ISS'}, {'name': 'Andrey Fedyaev', 'craft': 'ISS'}, {'name': 'Jing Haiping', 'craft': 'Tiangong'}, {'name': 'Gui Haichow', 'craft': 'Tiangong'}, {'name': 'Zhu Yangzhu', 'craft': 'Tiangong'}] type(result['people']) Out[9]: list Je comprends mal comment est structurée cette key. J'ai une list composée de 'name' puis d'informations concernant le membre de l'équipage suivi du vaisseau (l'ISS). Ah si, je vois, chaque élément de 'people' est lui-même un dict : type(result['people'][0]) Out[13]: dict composé d'une seule key 'name' : result['people'][0]['name'] Out[16]: 'Sergey Prokopyev' Pour résumer, result est un dictionnaire composé de 3 clefs dont une ('people') est une liste elle-même composée de 10 dictionnaires avec deux clefs à chaque fois : 'name' et 'craft'. J'ai bien compris ? Oui, je sais, c'est moi qui est écrit le script Python. Mais j'ai tâtonné en ligne 22 et 23 sans trop comprendre ce que j('ai écrit... Merci pour votre regard et vos explications, -- Dominique Esto quod es