ich versuche aktuell ein kleines Programm zu schreiben, das mir CSV Daten aus einer Datei ausliest und diese für weitere Rechenoperationen verfügbar macht.
Ich bin relativ unerfahren in der Programmierung mit Python, daher komme ich aktuell leider nicht weiter.
Im Folgenden mein Code:
Code: Alles auswählen
import csv
class Data:
def __init__(self, datei, trenner):
self.datei = datei
self.trenner = trenner
self.data = {}
self.sortedDict = {}
def readData(self):
with open(self.datei) as csvfile:
readCSV = csv.reader(csvfile, delimiter=self.trenner)
for row in readCSV:
self.data.update({ row[0] : float(row[4])})
def sortByKey(self):
self.sortedDict = sorted(self.data.items(), key = lambda t:t[0])
def printSortedDict(self):
for row in self.sortedDict:
print(row)
def printSortedRow(self, datep):
test = self.sortedDict[datep]
print(test)
Mit diesen beiden Werten möchte ich nun weiter arbeiten und möglichst irgendwann mit den Close-Werten rechnen. Daher speichere ich die Time-Variable als String zusammen mit der Close-Variable als float in einem Dictionary und sortiere dieses nach der String-Variable.
Wenn ich die Funktion printSortedDict() aufrufe, werden mir nun alle Werte in sortierter Reihenfolge ausgegeben, ungefähr so:
"2015-01-01", 10045,2525
"2015-01-02". 10065,2352
...
Soweit so gut. Mein Problem ist nun Folgendes: Ich wäre gerne in der Lage einzelne Reihen aus dem sortedDict über die string-variable, also das Datum, aufzurufen.
Versucht habe ich das testweise über die Funktion printSortedRow(), ein Aufruf wäre dann wie folgt:
Code: Alles auswählen
data1 = Data('DAX1.txt', ',')
data1.readData()
data1.sortByKey()
data1.printSortedRow('2016-05-11')
Als Error erhalte ich immer: TypeError: list indices must be integers or slices, not str
Gibt es irgendeine Technik, über die ich mittels einer string-Variable eine zugehörige float-Variable ansteuern kann?
Ich freue mich über jegliche Anregung und bedanke mich schon mal herzlich im Vorraus.