2016-12-06 19 views
-3

Я хочу сделать запись словаря из файла с несколькими строками: если строка только числовая, это будет значение, но если оно не (т.е. в основном альфа), это будет ключ для следующих чисел , пока в файле не появится другое имя. Я не смог понять, как заставить код «начать заново»/продолжить, создав новый ключ, когда он достигнет следующего имени.Оценка в файле в словаре в python?

файл выглядит примерно так:

Gigi: 
0 
2 
3 
2 
Bella: 
1 
6 
2 
9 

И я хотел бы иметь словарь, который выглядит следующим образом:

{Gigi: [0,2,3,2], Bella: [1,6,2,9]} 
+0

Вы что-нибудь написали, чтобы попытаться это сделать? – skrrgwasme

+0

Не могли бы вы показать нам, что у вас есть? StackOverflow на самом деле не для людей, чтобы написать вам программу, это больше поможет вам справиться с проблемами внутри вашей программы. – Qwerty

ответ

2
my_dict = {} 
current_key = None 
for line in open('/path/to/file', 'r'): 
    if not line.strip().isdigit(): 
     current_key = line.strip() 
     my_dict[current_key] = [] 
    else: 
     my_dict[current_key].append(int(line.strip())) 

Сначала установите пустой словарь, чтобы добавить ключи и значения для него, затем переменную для отслеживания текущего ключа до тех пор, пока не будет заменена следующая нецифровая цифра, и, наконец, перейдем к строкам в файле, если это не цифра, она установлена ​​как текущий ключ и добавлена ​​к t он словарь как пустой список, и если он представляет собой цифру, он преобразуется в целое и добавляется к словарной записи текущего ключа.

Редактировать: Это ожидает, что первая строка будет ключом, если сначала появятся цифры, в словаре не будет соответствующего ключа для добавления значений.

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