сортировка строк с использованием Python - PullRequest
0 голосов
/ 08 октября 2011

У меня есть текстовый файл, содержащий следующие строки (первое поле - это ключевые слова, второе поле - это частота ключевых слов, а третье поле - связанные тексты):

anorexia nervosa    1       在专利网看到一
glaucoma    10      want to suck out my eyeballs and have them replaced with
cancer  691     there is a drug that helps fight cancer called avastin
gene therapy    1       writing a review paper on gene therapy 
hormone 35      glad my hormone injections end in a month 
depression  259     depression? just made depression cake: recipe here

Я хочу проанализировать файл следующим образом (ключевые слова отсортированы по частоте ключевых слов):

cancer  691
depression  259
hormone 35
glaucoma    10
anorexia nervosa    1
gene therapy    1

Я проверяю другие вопросы о проблеме сортировки и заказа, но не могу найти хорошего примера. Сортировка (), кажется, не работает. Пожалуйста, дайте мне знать, с чего начать!

Ответы [ 2 ]

1 голос
/ 08 октября 2011

решение от eudoxos будет работать, нужно разделить вкладками (\ t) т.е.

data=file(yourFile).readlines()
data.sort(key=lambda l: float(l.split('\t')[1]),reverse=True)

Здесь, судя по вашему вводному тексту, я предполагаю, что различные поля разделены вкладками.

Тем не менее, разделители через запятую будут лучшим решением, поскольку существует возможность смешивать символы табуляции и пробелы.

1 голос
/ 08 октября 2011

Если у вас есть строки в массиве, используйте параметр key для функции сортировки;лямбда разделит строку в пробелах / табуляциях, возьмет второй столбец, преобразует в число с плавающей точкой и использует его для сравнения.reverse вызывает убывание ордера (извините, не проверено, но 99% работает по модулю ошибок ввода):

data=file(yourFile).readlines()
data.sort(key=lambda l: float(l.split()[1]),reverse=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...