On Sat, 29 Nov 2014 11:35:18 -0800, Gautam R Bharadwaj wrote: > Here is the code in python, this code arranges the alphabets in > descending order and now I want to encode each alphabet with 0 and next > alphabet with 1, then 00,01,10,11,000,001 and so on. Please help me with > that. > > ////////////////////////////////////////////////////////// > //////////////////CODE//////////////////////// > > from collections import defaultdict import string text ='intalks is an > organization comprised of passionate > students'.lower().translate(None,string.punctuation+' ') > c = defaultdict(int) > c.update({letter:0 for letter in string.lowercase[:26]}) > for letter in text: > c[letter] += 1 > > for letter,freq in sorted(c.iteritems(),key=lambda (l,f): (-f,l)): > print freq, letter
If you can confirm that the following: 0001111000011100001011001111010100001111100100110010000101001100000000110101010100001001111000011001000100001110 is the output you want in terms of the original string encoded according to your encoding scheme, then your problem domain currently is two fold: a) To write a function that generates the encoding b) To apply the encoding to the original string To achieve the former, I used a combination of determining a string length, converting a string to an integer using base 2, converting a number to a string in binary form, and generating arbitrary length strings of zeroes. Not necessarily all done in the most pythonic of manners I must admit. Have you attempted anything to generate you string of encodings yet? Because until you show a good faith effort, you don't my solution to your homework problem for free. To achieve the latter, I took the encodings and strung them together according to the letters they represented in the original string. -- Denis McMahon, denismfmcma...@gmail.com -- https://mail.python.org/mailman/listinfo/python-list