'Don't understand my assertion error for Huffman tree project

For our class project we need to do an Huffman implementation in Python, but turns out it's quite hard and ressources online usually don't match with my code.

There is already a function that "scans" a txt file and some other functions with help function to create a tree and then I did a function to create a list of all these Nodes.

Here is my current Huffman Python implementation :

def dictionnaire(fichier):
    with open(fichier, "r", encoding='utf-8') as txt:
        texte = txt.read()

    dictionnaire1 = {}
    for lettre in texte:
        if lettre not in dictionnaire1:
            dictionnaire1[lettre] = 0
        if lettre in dictionnaire1:
            dictionnaire1[lettre] += 1

    return dictionnaire1


print(dictionnaire("testpy.txt"))
print()

assert dictionnaire("testpy.txt") == {'T': 1, 'e': 2, 's': 1, 't': 2, ' ': 1, 'p': 1, 'r': 1, 'o': 1, 'j': 1}


class Noeud:
    """ un noeud d'un arbre binaire"""
    def __init__(self, g, v, o, d):
        self.gauche = g
        self.valeur = v
        self.occurence = o
        self.droit = d
        
    def modifier_fils_droit(self, d):
        self.droit = d

    def modifier_fils_gauche(self, g):
        self.gauche = g

    def fils_droit(self):
        return self.droit
        
    def fils_gauche(self):
        return self.gauche
    
    def valeur(self):
        return self.valeur
    
    def occurence(self):
        return self.occurence
        
        
    def donnee(self):
        """ Donne l'étiquette (la donnée)"""
        return self.valeur
    
    def __str__(self):
        return 'Valeur : ' + str(self.valeur) + \
            ' et Occurence : ' + str(self.occurence)
        

# Structure du dict :
dict_exemple = {'a': 21,
                'b': 15,
                'c': 30,
                'd': 9,
                'e': 5,
                'f': 7}

print(dict_exemple.values())

print(dict_exemple)

for key, value in dict_exemple.items():
    print( key, value )
    
a = Noeud(None, "e", 8, None)
print(a)
      

def creer_liste(dict):
    lst = []
    
    for key, value in dict.items():
        
        lst.append(Noeud(None, key, value, None))
        
        # print(Noeud(None, key, value, None))
        
    return lst


def minimum(lst):
    """Retourne le minimum de la liste d'arbres."""
    
    mini = 0
    
    for i in range(len(lst)):
        if lst[i].occurence < lst[mini].occurence:
            mini = i
            
    return mini

print("i_min : " + str(minimum(creer_liste(dict_exemple))))


def creer_arbre(lst):
    
    L = []
    
    while len(lst) > 1:
        a1 = lst.pop(minimum(lst))
        a2 = lst.pop(minimum(lst))
        
        a = Noeud(a1, None, a1.occurence + a2.occurence, a2)
        L.append(a)
        print(a)
        print(a.fils_gauche())
        print(a.fils_droit())
        
    return L



j = Noeud(None, 'c', 30, None)
i = Noeud(None, 'a', 21, None)
h = Noeud(i, None, 51, j)

f = Noeud(None, 'b', 15, None)
e = Noeud(None, 'd', 9, None)
d = Noeud(e, None, 24, f)

c = Noeud(None, 'f', 7, None)
b = Noeud(None, 'e', 5, None)
a = Noeud(b, None, 12, c)

assert creer_arbre(creer_liste(dict_exemple)) == [a, d, h]

print(creer_liste(dict_exemple))
print()
print(creer_arbre(creer_liste(dict_exemple)))

It prints this btw :

dict_values([21, 15, 30, 9, 5, 7])
{'a': 21, 'b': 15, 'c': 30, 'd': 9, 'e': 5, 'f': 7}
a 21
b 15
c 30
d 9
e 5
f 7
Valeur : e et Occurence : 8
i_min : 4
Valeur : None et Occurence : 12
Valeur : e et Occurence : 5
Valeur : f et Occurence : 7
Valeur : None et Occurence : 24
Valeur : d et Occurence : 9
Valeur : b et Occurence : 15
Valeur : None et Occurence : 51
Valeur : a et Occurence : 21
Valeur : c et Occurence : 30

I know a lot of variables are in French but those words are very similar in English.

I am not a pro in Python so not sure what is going wrong. Thanks a lot in advance.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source