Tableau à partir d'un dictionnaire
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
Exemple pour le station ALHU :
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 !
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
-
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