Itération dans une liste de dictionnaire

Résolu
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. Modérateur
    Bonjour
    En déplaçant l'initialisation de ta variable
    format_ = ''

    avant la boucle je pense..

    1. Modérateur
      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