2014-07-20 1 views
1

Так что в настоящее время я пытаюсь взять вложенный список с данными и преобразовать некоторые элементы этих списков в целые числа. Так прямо сейчас вложенный список печатает это:Как сделать только некоторые строки вложенных списков целыми числами?

def Top5_Bottom5_test(): 
    with open("Population.txt", "r") as in_file: 
     nested = [line.strip().split(',') for line in in_file][1:] #This creates the nested list 
     nested[0:][1:] = [int(x) for x in nested[0][1:]] #This is what I'm trying to use to make the numbers in the lists into integers. 
     print nested 

Печатается:

[['Alabama', '126', '79', '17'], ['Alaska', '21', '100', '10'], ['Arizona', '190', '59', '16'], ['Arkansas', '172', '49', '28']....] 

Но то, что я пытаюсь получить его к выходу, так что я могу использовать сортировки пузыря:

[['Alabama', 126, 79, 17], ['Alaska', 21, 100, 10], ['Arizona', 190, 59, 16], ['Arkansas', 172, 49, 28]....] 

С этим моим endgoal является получение списков, отсортированных по [1] -му элементу в порядке убывания, но я не могу сделать это, пока они находятся в строковой форме. Попытка избежать использования функций sort() и sorted().

ответ

1

Попробуйте это:

nested = [line.strip().split(',') for line in in_file][1:] 
nested = [line[:1] + [int(x) for x in line[1:]] for line in nested] 

Хитрость заключается в использовании списка срезов обработать отдельно первый элемент, а остальные элементы в каждой строке.

+0

Кажется, выдает ошибку «ValueError: недействительный литерал для int() с базой 10: 't'". –

+0

@JohnathanScott Я обновил свой ответ, если он все еще не работает - вы уверены, что входные данные выглядят как образец в вопросе? кажется, что какой-то элемент (после первого) в некоторой строке не является целым числом. –

+0

Первая строка в файле .txt, который я импортирую, игнорировалась в коде, который у меня был выше, потому что это просто легенда, так сказать. Обычно это просто текстовый файл с Alabama, 1,2,3 Alaska, 2,5,3 и т. Д. Но код, который я разделил на него, вложенный список. –