2015-07-09 4 views
-3

Я пытаюсь создать словарь из текстового файла, используя каждую вторую строку в качестве ключа и каждой первой строки в виде списка значений:Как читать каждую первую строку из файла как значения, второй как ключ к словарю

value1 value2 
key1 
value3 value4 
key2 

Мой код:

file = open('path', 'r') 
my_dict = {} 
a = 0 
for lines in file: 
    a += 1 
    if ((a % 2) == 1): 
     key_lines = lines.strip().split() 
    else: 
    value_lines = lines.strip().split() 
    break 
my_dict[key_lines] = value_lines[1] 

не работает :(

+2

Так в чем же проблема, точно? – jonrsharpe

+0

Поместите оператор печати в набор для цикла, чтобы узнать, что происходит. – wwii

ответ

1

Вы можете получить следующую строку из файла с помощью next() function:

my_dict = {} 
with open('path', 'r') as file_object:  
    for values in file_object: 
     values = values.split() 
     key = next(file_object, None) 
     if key is None: 
      # oops, we got to the end of the file early 
      raise ValueError('Invalid file format, missing key') 
     my_dict[key.strip()] = values 

Каждый раз, когда вы звоните next() на файл объект файла возвращает следующую строку, и цикл for поднимает снова с этой точкой. Таким образом, цикл for получает все нечетные строки, со значениями, вызов next() затем извлекает четные строки с помощью ключа.

+0

Большое спасибо. Я забыл, что есть также каждая третья строка, но я получил ее работу с вашим образцом. – FieryDoge