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)
5
A
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.
Một danh sách những gì? Từ ngữ? –