To implement Huffman coding to compress the data using Python.
- Anaconda - Python 3.7
Create the input String.
Create tree nodes.
Main function of implementing huffman coding
Calculate the frequency of occurrence
Print the characters and its Huffman code
Developed By: Jeswanth S
Register No: 212221230042
string = 'Jeswanth_212221230042'
class NodeTree(object):
def __init__(self, left=None, right=None):
self.left = left
self.right=right
def children(self):
return (self.left,self.right)
def nodes (self):
return (self.left,self.right)
def __str__(self):
return '%s %s' %(self.left,self.right)
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
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.