Deutsch   English   Français   Italiano  
<ub7ej9$18ncg$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Dominique <zzz@aol.com>
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: <ub7ej9$18ncg$1@dont-email.me>
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