2011-11-01 5 views
5

शीर्षक की तरह मुझे कहता है कि मुझे एक ऐसा फ़ंक्शन लिखना होगा जो अक्षरों की आवृत्ति द्वारा एक सूची को सॉर्ट करेगा। आम तौर पर मैं अपने कोड को जो कुछ भी प्राप्त करता हूं उसके साथ आपूर्ति करता हूं लेकिन मुझे नहीं पता कि कहां से शुरू किया जाए। मुझे यकीन है कि यह कुछ आसान है लेकिन मुझे नहीं पता कि क्या करना है। मुझे उन्हें घटते क्रम में क्रमबद्ध करने की ज़रूरत है, धन्यवाद किसी भी मदद की सराहना की है, धन्यवाद।पायथन (घटते क्रम) में पत्र की आवृत्ति द्वारा एक सूची छंटनी

+1

क्या एक सूची है? शब्द? –

उत्तर

9
अजगर 2.7 में

या उच्च आप एक काउंटर का उपयोग कर सकते हैं: 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}) 

के रूप में प्रति Sorted Word frequency count using python

अगर आप शब्दों के बजाय पत्र की जरूरत है आप इस तरह जा सकते हैं:

>>> 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

लिए Python2.7 +, एक collections.Counter और उसके most_common विधि का उपयोग करें:

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 

python2.6 के लिए या उससे पहले आप बराबर Counter recipe उपयोग कर सकते हैं।

संबंधित मुद्दे