Ich verwende Python, um eine große Menge von CSV-Daten zu analysieren. Diese Daten enthalten vier verschiedene Arten von Metriken für ein bestimmtes Zeitstempel- und Hostpaar, wobei der Metriktyp im ersten Feld jeder Zeile angegeben ist. Hier ist ein vereinfachtes Beispiel:Implizit entscheiden, welches Wörterbuch verwendet werden soll
metric,timestamp,hostname,value
metric1,1488063747,example01.net,12
metric2,1488063747,example01.net,23
metric3,1488063747,example01.net,34
metric4,1488063747,example01.net,45
metric1,1488063788,example02.net,56
metric2,1488063788,example02.net,67
metric3,1488063788,example02.net,78
metric4,1488063788,example02.net,89
Also, für jede row
(eigentlich eine Liste innerhalb einer Liste von Listen) ich einen Index des Zeitstempels und die Hostnamen zusammengesetzt machen:
idx = row[1] + ',' + row[2]
Jetzt, basierend auf der Inhalt des ersten Feldes (Listenelement), mache ich etwas wie:
if row[0] == 'metric1': metric_dict[idx] = row[3]
Ich mache das für jede der 4 Metriken. Es funktioniert, aber es scheint, als sollte es einen besseren Weg geben. Es scheint, als ob ich irgendwie implizit oder indirekt das zu verwendende Wörterbuch basierend auf dem Inhalt von Zeile [0] auswählen muss, aber meine Suchen haben kein Ergebnis ergeben. In diesem Fall sind 4 if
Zeilen nicht schwierig, aber es wäre nicht ungewöhnlich, dass mehr metrische Typen in einer Datei enthalten sind. Ist es möglich, dies zu tun und bleiben Sie mit, wie viele Wörterbücher benötigt werden, nachdem die Liste der Listen gelesen wird? Vielen Dank.
Sie könnten Nest diese dicts in * anderen * dict, sagen 'metrics', wo die Schlüssel sind'“ metric1 "', und die Werte sind das passende dict, also, metric [row [0]] [idx] 'ist das, was du am Ende benutzen würdest. –