2011-11-01 67 views
5

Giống như tiêu đề, tôi cần viết một hàm sắp xếp danh sách theo tần suất của các chữ cái. Thông thường tôi sẽ cung cấp mã của tôi với những gì tôi có cho đến nay nhưng tôi không có ý tưởng bắt đầu từ đâu. Tôi chắc chắn một cái gì đó đơn giản nhưng tôi chỉ không biết phải làm gì. Tôi cần chúng được sắp xếp theo thứ tự giảm dần, mọi trợ giúp đều được đánh giá cao, cảm ơn.Sắp xếp danh sách theo tần suất của chữ cái trong python (thứ tự giảm)

+1

Một danh sách những gì? Từ ngữ? –

Trả lời

9

trong python 2.7 hoặc cao hơn, bạn có thể sử dụng một bộ đếm: http://docs.python.org/dev/library/collections.html#collections.Counter

>>> mywords = ['red', 'blue', 'red', 'green', 'blue', 'blue'] 
>>> cnt = Counter(mywords) 
>>> cnt 
Counter({'blue': 3, 'red': 2, 'green': 1}) 

theo Sorted Word frequency count using python

nếu bạn cần chữ thay lời bạn có thể đi như thế này:

>>> mywords = ['red', 'blue', 'red', 'green', 'blue', 'blue'] 
>>> myletters=list("".join(mywords)) 
>>> myletters 
['r', 'e', 'd', 'b', 'l', 'u', 'e', 'r', 'e', 'd', 'g', 'r', 'e', 'e', 'n', 'b', 'l', 'u', 'e', 'b', 'l', 'u', 'e'] 
>>> Counter(myletters) 
4

Đối Python2.7 +, sử dụng một collections.Counter và phương pháp most_common của nó:

import collections 

text='abccccabcbb' 
count=collections.Counter(text) 

print(count.most_common()) 
# [('c', 5), ('b', 4), ('a', 2)] 

print(''.join(letter*freq for letter,freq in count.most_common())) 
# cccccbbbbaa 

Đối python2.6 hoặc thấp hơn, bạn có thể sử dụng tương đương Counter recipe.

Các vấn đề liên quan