Itération dans une liste de dictionnaire

Résolu
Logic -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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))

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour
    En déplaçant l'initialisation de ta variable
    format_ = ''

    avant la boucle je pense..

    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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