To implement Huffman coding to compress the data using Python.
- Anaconda - Python 3.7
Assign the input string.
Create the required tree nodes.
Create a function to implement the huffman coding.
Calculate frequency of occurence.
Print the characters and its Huffman code.
Developed by : Kadin Samson L
Registration Number : 212221230044
string=input("Kadin Samson L 212221230044")
class NodeTree(object):
def __init__(self,left=None,right=None):
self.left=left
self.right=right
def children(self):
return(self.left,self.right)
#Main function implementing huffman coding
def huffman_code_tree(node,left=True,binString=''):
if type(node) is str:
return{node: binString}
(l,r) = node.children()
d=dict()
d.update(huffman_code_tree(l,True,binString +'0'))
d.update(huffman_code_tree(r,False,binString +'1'))
return d
#Calculating frequency
freq={}
for c in string:
if c in freq:
freq[c] +=1
else:
freq[c] = 1
freq=sorted(freq.items(),key=lambda x: x[1],reverse=True)
nodes=freq
while len(nodes)>1:
(key1,c1)=nodes[-1]
(key2,c2)=nodes[-2]
nodes=nodes[:-2]
node =NodeTree(key1,key2)
nodes.append((node,c1+c2))
nodes=sorted(nodes,key=lambda x: x[1],reverse=True)
huffmanCode = huffman_code_tree(nodes[0][0])
print(' Char | Huffman code ')
print('----------------------')
for (char,frequency) in freq:
print(' %-4r |%12s' % (char,huffmanCode[char]))
Thus, the huffman coding was implemented to compress the data using python programming.