2016-02-19 4 views
0

Мне было предложено написать программу, которая учитывает слово в текстовом файле. Я смог рассчитать слово и его частоту и сохранить их в словаре. Теперь я должен записать эти данные в другой текстовый файл, но с уменьшением порядка частоты. Если два слова имеют одинаковую частоту, слово должно быть записано в алфавитном порядке в выходной текстовый файл.Python Word Frequency Сортировка

Я записал слово и его частоту в кортеж и сделал то же самое для всего слова в файле. Список, содержащий кортежи, содержащие (частота, слово).

Я использовал .sort (reverse = True) для сортировки кортежей, но также сортирует слова с одинаковой частотой в обратном алфавитном порядке.

Ex: Если мой список:

L = [(4,"hello"),(2,"zebra"),(2,"apple"),(1,"a"),(1,"the"),(1,"bike")] 

Вывод должен быть:

hello   4 
apple   2 
zebra   2 
a    1 
bike   1 
the   1 

ответ

2

Вот 3 вкладыш, который решает проблему

L = [(4,"hello"),(2,"zebra"),(2,"apple"),(1,"a"),(1,"the"),(1,"bike")] 
L = sorted(L, key=lambda x: (-x[0],x[1])) 
for i,j in L: 
    print j, i 

Выход

hello 4 
apple 2 
zebra 2 
a 1 
bike 1 
the 1 

Идея состоит в том, что вы хотите отсортировать первый компонент кортежа в другом порядке как второй компонент. Простым преобразованием, чтобы принять это во внимание, является установка ключа сортировки (-x [0], x [1]).