Itération dans une liste de dictionnaire
Résolu
Bonjour,
Le code ci-dessous est fonctionnel, mais je cherche à ce que tous les
Le code ci-dessous est fonctionnel, mais je cherche à ce que tous les
format_soient retournés et pas seulement le dernier.
list1 = [
{
"date": "2021-01-23 11:58:20",
"gagnant": None,
"id": "5559cafd-6966-4465-af6f-67a784016b41",
"joueurs": ["jowic42", "robot"]
}, {
"date": "2021-01-24 14:23:59",
"gagnant": "jowic42",
"id": "80a0a0d2-059d-4539-9d53-78b3f6045943",
"joueurs": ["jowic42", "robot"]
}
]
def lister_parties(list1):
compteur = 0
for dico in list1:
format_ = ""
date = dico.get("date")
gagnant = dico.get("gagnant")
joueurs = dico.get("joueurs")
compteur += 1
if gagnant is None:
format_ += f"{compteur} : {date}, {joueurs[0]} vs {joueurs[1]}"
else:
format_ += f"{compteur} : {date}, {joueurs[0]} vs {joueurs[1]}, gagnant: {gagnant}"
return format_
print(lister_parties(list1))
2 réponses
-
Bonjour
En déplaçant l'initialisation de ta variableformat_ = ''
avant la boucle je pense..
-
Bonjour,
Voici comment tu peux t'en sortir :
parties = [ { "date": "2021-01-23 11:58:20", "gagnant": None, "id": "5559cafd-6966-4465-af6f-67a784016b41", "joueurs": ["jowic42", "robot"] }, { "date": "2021-01-24 14:23:59", "gagnant": "jowic42", "id": "80a0a0d2-059d-4539-9d53-78b3f6045943", "joueurs": ["jowic42", "robot"] } ] def afficher_partie(partie): date = partie.get("date") gagnant = partie.get("gagnant") joueurs = partie.get("joueurs") ret = f"{date}, {joueurs[0]} vs {joueurs[1]}" if gagnant is not None: ret += f", gagnant: {gagnant}" return ret def afficher_parties(parties): return "\n".join( f"{i} : {afficher_partie(partie)}" for (i, partie) in enumerate(parties) ) print(afficher_parties(parties))
Résultat :
0 : 2021-01-23 11:58:20, jowic42 vs robot
1 : 2021-01-24 14:23:59, jowic42 vs robot, gagnant: jowic42
Bonne chance