Tableau à partir d'un dictionnaire

Fermé
jakes64 - Modifié par mamiemando le 1/03/2017 à 10:46
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 1 mars 2017 à 11:12
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 !

A voir également:

1 réponse

mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
Modifié par mamiemando le 1/03/2017 à 11:16
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