2013-11-19 2 views
0

Я пишу программу Python, в которой мне нужно подсчитать, сколько из каждого слова есть в текстовом файле.Как найти слова в текстовом файле?

def count_words(word,d): 
    for l in word: 
     if l in d: 
      d[l] += 1 
     else: 
      d[l] = 1 
     return d 

def count_letters(): 
    d = dict() 
    word_file = open('w.txt') 
    for line in word_file: 
     word = line.strip(); 
     d = count_words(word,d) 
    return d 

ответ

2

Вы можете легко уйти с обратной сортировки при одном условии и вперед сортировки по другому, если один из них является int инвертированием int в ключевом FUNC

заменить

freq_list.sort() 

с

freq_list.sort(key=lambda x:(-x[1], x[0])) 

В м рудные общий случай, так как своего рода Python является stable можно сортировать по второму ключу, а затем первый

freq_list.sort(key=lambda x:x[0]) 
freq_list.sort(key=lambda x:x[1], reverse=True) 

Недостатком является то, что вам нужно сделать два вида, так что это немного медленнее

+1

лямбда необходимо вернуть кортеж: '(-x [1], x [0])' – Tim

+0

Именно поэтому Python 3 сделал эти неоднозначные конструкции незаконными ... Они не двусмысленны для переводчика, но есть вероятность 50/50 «Я буду интерпретировать их неправильно каждый раз, когда вы их видите» (или писать код, который выглядит правильно, но вызывает таинственные ошибки, такие как «TypeError:« tuple »объект не вызываем», когда вы их запускаете). – abarnert

+0

Хороший ответ. Для дальнейшего чтения см. [Сортировка HOWTO] (http://docs.python.org/3/howto/sorting.html) в документах. – abarnert

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