Itération dans une liste de dictionnaire

Résolu/Fermé
Logic - Modifié le 25 mars 2022 à 13:52
mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 - 25 mars 2022 à 13:53
Bonjour,

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))
A voir également:

2 réponses

jordane45 Messages postés 38264 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 31 octobre 2024 4 694
Modifié le 25 mars 2022 à 13:44
Bonjour
En déplaçant l'initialisation de ta variable
format_ = ''

avant la boucle je pense..

0
mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 7 800
25 mars 2022 à 13:53
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
0