erstmals Plakat lange Zeit LeserWie eine Liste in einem verschachtelten Wörterbuch aus einer CSV-
ich eine csv haben zu definieren, die auf diese Weise formatiert wird, bemerken, dass es mehrere Datensätze gleichzeitig und innerhalb dieses Zeitraums sind, gibt es mehrere Datensätze mit demselben data4 Wert:
Time,data1,data2,data3,data4
8/12/2017 8:37:11.719,4435441.97983871,321106.049167927,1260.354,64
8/12/2017 8:37:11.719,4435451.97715054,321346.085476551,1260.354,60
8/12/2017 8:37:11.719,4435461.97446237,321096.047655068,1260.354,64
8/12/2017 8:37:11.719,4435461.97446237,321106.049167927,1260.354,64
8/12/2017 8:37:26.919,4436121.79704301,324496.562027231,1260.354,96
8/12/2017 8:37:26.919,4436121.79704301,324506.563540091,1260.354,96
8/12/2017 8:37:26.919,4436121.79704301,324546.569591528,1260.354,56
8/12/2017 8:37:26.919,4436121.79704301,324646.584720121,1260.354,64
ich versuche, eine Funktion zu schreiben, diese csv in einem verschachtelten Wörterbuch zu lesen, die die Zeitspalte und die data4 Spalte als verschachtelte Schlüssel verwendet. Was ich bisher habe, ist dies:
def build_dict(source_file):
new_dict = defaultdict(dict)
headers = ['Time','data1','data2','data3','data4']
with open(source_file, 'rb') as fp:
reader = csv.DictReader(fp, fieldnames=headers, dialect='excel',
skipinitialspace=True)
for rowdict in reader:
if None in rowdict:
del rowdict[None]
Time = rowdict.pop("Time")
data4 = int(rowdict.pop("data4"))
dict[Time][data4] = rowdict
return dict(new_dict)
Welche zurück:
new_dict = {
'8/12/2017 8:37:11.719' : {
64: {'data3': '1260.354', 'data1': '4435441.97983871', 'data2': '321106.049167927'},
60: {'data3': '1260.354', 'data1': '4435451.97715054', 'data2': '321346.085476551'}
}
}
Es ist fast tut, was ich brauche, aber es überschreibt die vorherigen Zeilendaten mit Zeit und data4 sind die gleichen. Ich denke, ich muss Daten1, Daten2 und Daten3 in einer Liste speichern, aber nicht sicher, wie es geht. Diese
ist das, was ich würde mein Wörterbuch mag wie so aussehen, dass pro Zeiteinheit kann ich Gruppendaten von data4 Werte:
new_dict = {
'8/12/2017 8:37:11.719' : {
60 : [
{'data1': '4435451.97715054', 'data2': '321346.085476551', 'data3': '1260.354'}
],
64 : [
{'data1': '4435441.97983871', 'data2': '321106.049167927', 'data3': '1260.354'},
{'data1': '4435461.97446237', 'data2': '321096.047655068', 'data3': '1260.354'},
{'data1': '4435461.97446237', 'data2': '321106.049167927', 'data3': '1260.354'}
]
}
}
Jede Hilfe Sie würde sehr geschätzt werden zur Verfügung stellen kann.
Wow, zwei gute Antworten und so schnell. Ich habe dies als Antwort markiert, weil es für mich einfacher schien, aber nicht bedeutet, dass der andere es nicht war, danke für die Hilfe – Dustman