2012-09-25 51 views
0

我有一個項目,我必須通過sys.stdin的Python:我怎樣才能增加頻率的行數和按字母順序排序使用字典

獲得我所獲得的那部分的每個單詞的頻率量。第二部分是獲取每個單詞的行號,我覺得我已經獲得了,但我不能在輸出字符串中添加行號,我也無法找到一種按字母順序排序的方法,如果單詞具有相同的頻率

這裏是我的代碼:

if __name__ == '__main__': 

wordCount = defaultdict(list) 
words = {} 

for i, line in enumerate(sys.stdin.readlines()): 
    wordCount[line].append(i+1) #add the line number to each element in the line 
    for word in line.lower().split(): 
     words[word] = words.get(word, 0) + 1 

sortedList = sorted(words.items(), key=itemgetter(1), reverse=True) 
for word, frequency in sortedList: 
    print("%d %s" % (frequency, word))," " # <-- HERE I NEED TO ADD THE LINE NUMBER AND ALSO SORT ALPHABETICALLY 

如果我輸入 「Python是真的很酷」 的#line 1 #行 「我與蟒蛇真正的工作」 2

輸出應該是:

2 python 1 2 

2 really 1 2 

1 am 2 

1 cool 1 

1 I 2 

1 is 1 

1 with 2 

1 working 2 
+3

s/project/homework? –

回答

1

既然你已經知道了defaultdict,我會繼續這樣做 - 雖然我會使用defaultdict(list),它有words作爲鍵,這些值將是一個行號列表。然後,最後,您只需遍歷字典即可獲得列表的len以獲得您的計數(可能在打印行號以清除重複項時使用sortedset)。

+0

謝謝!我會嘗試 – n3my

相關問題