2016-05-25 14 views
1

Wenn ich wie so eine Datei mit drei Spalten lese:macht einen Wörterbuch aus einer Datei mit drei Spalten

james  1.0 2.5 

Tom  2.0 2.1 

Ryan  3.0 2.5 

ich nicht herausfinden kann, wie nur die erste Spalte des Schlüssel meines Wörterbuch zu machen (als Strings) und die nächsten 2 Spalten (als Fließkommazahlen) meine Werte. Ich weiß, wie es mit nur zwei Spalten zu tun, aber ich bin verwirrt, wie man mit 3.

Dies ist mein Code so weit:

def makeDict(filename): 
    with open(filename) as f: 
     sDict = dict(x.rstrip().split(None,1) for x in f) 
     return(sDict) 
     filename.close() 
+0

Wird es die ganze Zeit drei Spalten sein? – gglasses

+0

ja die eigentliche Datei ist 3 Spalten mit wie 120 Wörter in jedem – pythonUC211

+0

die zweite und die dritte Spalte werden in einer Liste mit Ihrer ersten Spalte als der Schlüssel rechts sein? :-) – gglasses

Antwort

0

Wesentlichen in der Datei, aufgeteilt auf die Felder zu lesen, dann erstellen das Wörterbuch mit Wörterbuchverständnis.

f = open("data.txt","r") 
lines = list(map(lambda x: x.split(" "), f.readlines())) 
f.close() 

some_dictionary = { line[0]: (float(line[1]), float(line[2])) for line in lines} 
1

Wie wäre:

with open(filename) as f: 
    return {k:[v1,v2] for k,v1,v2 in (x.rstrip().split() for line in f)} 
1
dict = {} 
f = open(file) 
for line in f: 
    line = line.split() 
    dict[line[0]] = line[1:] 
f.close() 
1

Wie wäre:

def makeDict(filename): 
    with open(filename) as f: 
     return {row[0]: [float(x) for x in row[1:]] 
       for row in (line.rstrip().split() for line in f)} 

es zu brechen ... hier sind wir in den Zeilen lesen und sie auf Leerzeichen Aufspalten

(line.rstrip().split() for line in f) 

Dann wiederholen wir das und nehmen das erste Element als Schlüssel, während alle anderen in Floats umgewandelt werden.

+0

gibt es eine Möglichkeit, dieses Wörterbuch zu benennen, damit ich es später nennen kann? Wenn ich möchte, dass das Wörterbuch sDict heißt, damit ich es später verwenden kann, wo würde ich es in diesem Code implementieren? – pythonUC211

+0

das funktionierte, aber ich möchte später dieses Wörterbuch aufrufen können – pythonUC211

+0

Weisen Sie dann den Rückgabewert vom Aufrufen der Funktion ... 'sDict = makeDict (Dateiname)' – donkopotamus

Verwandte Themen