2016-05-25 6 views
1

Если я читаю файл с тремя колонками, как так:делает словарь из файла с тремя столбцами

james  1.0 2.5 

Tom  2.0 2.1 

Ryan  3.0 2.5 

Я не могу понять, как сделать только первый столбец клавишу моего словаря (как строки) и следующие 2 столбца (числа с плавающей запятой) мои значения. Я знаю, как это сделать только две колонки, но я запутался о том, как с 3

Это мой код до сих пор:

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

Разве это будет три столбца все время? – gglasses

+0

Да, фактический файл - это 3 столбца с 120 словами в каждом – pythonUC211

+0

, второй и третий столбцы будут внутри списка с вашим первым столбцом в качестве ключа вправо? :-) – gglasses

ответ

0

По существу, читайте в файле, расколе на пространствах, затем создать словарь с использованием понимания словаря.

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

Как насчет:

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

Как насчет:

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)} 

Чтобы разбить его ... здесь мы читаем в линиях и разделив их на пробельных

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

Затем мы повторяем это и берём первый элемент в качестве ключа, а остальные конвертируем в поплавки.

+0

есть ли способ назвать этот словарь, поэтому я могу назвать его позже? если я хочу, чтобы словарь назывался sDict, поэтому я могу использовать его позже, где бы я его реализовал в этом коде? – pythonUC211

+0

Это сработало, но я хочу, чтобы иметь возможность называть этот словарь позже – pythonUC211

+0

Затем присвойте возвращаемое значение из вызова функции ... 'sDict = makeDict (имя_файла)' – donkopotamus

Смежные вопросы