大衛的解決方案是最好的。
但可能更多的樂趣比什麼,在這裏是不導入任何模塊的解決方案:
dicto = {}
for ele in mylist:
try:
dicto[ele] += 1
except KeyError:
dicto[ele] = 1
top_10 = sorted(dicto.iteritems(), key = lambda k: k[1], reverse = True)[:10]
結果:
>>> top_10
[('and', 13), ('all', 2), ('as', 2), ('borogoves', 2), ('boy', 1), ('blade', 1), ('bandersnatch', 1), ('beware', 1), ('bite', 1), ('arms', 1)]
編輯:
回答跟進問題:
new_dicto = {}
for val, key in zip(dicto.itervalues(), dicto.iterkeys()):
try:
new_dicto[val].append(key)
except KeyError:
new_dicto[val] = [key]
alph_sorted = sorted([(key,sorted(val)) for key,val in zip(new_dicto.iterkeys(), new_dicto.itervalues())], reverse = True)
結果:
>>> alph_sorted
[(13, ['and']), (2, ['all', 'as', 'borogoves']), (1, ['"and', '"beware', '`twas', 'arms', 'awhile', 'back', 'bandersnatch', 'beamish', 'beware', 'bird', 'bite', 'blade', 'boy', 'brillig'])]
,一旦出現按字母順序排序,如果你發現有些話對他們有多餘的引號的字。
編輯:
在回答另一個跟進的問題:
top_10 = []
for tup in alph_sorted:
for word in tup[1]:
top_10.append(word)
if len(top_10) == 10:
break
結果:
>>> top_10
['and', 'all', 'as', 'borogoves', '"and', '"beware', '`twas', 'arms', 'awhile', 'back']
接受此消息! – 2012-04-11 04:05:46
就是這樣。沒有更多的在灌木叢中跳動。 – 2012-04-11 04:22:36
我沒有python的最新版本,也無法使用計數器 – 2012-04-11 04:41:45