Tableau à partir d'un dictionnaire

jakes64 -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'aimerais réussir à créer un tableau de présence ou d'absence de données de stations sismologiques à partir d'un dictionnaire.

Le dictionnaire est de la forme suivante :
- les clés sont les noms des stations
- les valeurs sont toutes les dates où j'ai de la donnée sous format
UTCDatetime
( https://docs.obspy.org/packages/autogen/obspy.core.utcdatetime.UTCDateTime.html )

Exemple pour le station ALHU :

{'ALHU': [2008-02-09T00:00:00.000000Z,
2008-04-09T00:00:00.000000Z,
2008-05-19T00:00:00.000000Z,
2008-07-18T00:00:00.000000Z,
2008-08-27T00:00:00.000000Z,
2008-10-26T00:00:00.000000Z,
2008-12-08T00:00:00.000000Z],}


L'idée serait que le tableau serait de la forme suivante :
-Chaque ligne correspond à une station
-Chaque colonne à un jour de l'année

Je voudrais remplir chaque case soit par un code couleur (vert=présence de donnée, rouge=absence) ou alors par un code binaire (1=présence et 0=absence).

Si quelqu'un pouvait me conseiller ou m'aider à réaliser ce tableau ça serait super gentil :)

Merci à vous !

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Il faudrait préciser dans quel format ton tableau doit être écrit. En HTML ?
    Connais-tu le nombre de colonnes à l'avance ?
    Est-il constant pour chaque station ?
    Car cela a un impact en HTML (les lignes doivent toutes avoir le même nombre de colonnes ou être étalées de sorte à remplir toutes les colonnes).

    Personnellement je préconise que tu t'en tienne au moins dans un premier temps à une colonne pour la clé et une pour la donnée.

    Exemple :

    #!/usr/bin/env python3
    
    def dict_to_html(d, caption1 = "Key", caption2 = "Data"):
        return """
        <table>
          <tr>
            <th>%(caption1)s</th>
            <th>%(caption2)s</th>
          </tr>
          %(rows)s
        </table>
        """ % {
            "caption1" : caption1,
            "caption2" : caption2,
            "rows" : "<tr>%s</tr>\n" % "</tr>\n       <tr>".join([
                "<td>%(key)s</td><td class=\"%(class)s\">%(data)s</td>" % {
                    "key"   : key,
                    "data"  : ", ".join(data) if data else "No data",
                    "class" : "green" if data else "red",
                } for key, data in sorted(d.items())
            ]),
        }
    
    d = {
        "station1" : ["date1", "date2"],
        "station2" : ["date3", "date4"],
        "station3" : [],
    }
    
    print("""
    <html>
      <head>
        <!-- See [https://www.w3schools.com/css/css_table.asp] -->
        <style>
          table, th, td {
             border: 0px solid black;
          }
    
          th {
            background-color: #4CAF50;
            color: white;
          }
    
          tr:nth-child(even) {
            background-color: #f2f2f2;
          }
    
          td.red {
            color: red;
          }
    
          td.green {
            color: green;
          }
        </style>
      </head>
      <body>
        <h1>Données</h1>
    
        %(d)s<br/>
    
        <h1>Résultat:</h1>
    
    %(table)s
    
      </body>
    </html>
    """ % {
        "d" : d,
        "table" : dict_to_html(d, "Station", "Données")
    })
    


    Bonne chance
    0