'<' not supported between instances of 'dict' and 'str'
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

'<' not supported between instances of 'dict' and 'str'



  1. #1
    coco011

    '<' not supported between instances of 'dict' and 'str'


    ------

    Bonjour,

    j'ai créé une fonction sur python pour créer l'arbre de Huffman :

    Code:
    def arbre_huffman(occurrences): #occurences correspond au dictionnaire de fréquences de chaque caractère
        # Construction d'un tas avec les lettres sous forme de feuilles
        tas = [(occ, lettre) for (lettre, occ) in occurrences.items()]
        heapq.heapify(tas)
        # Création de l'arbre
        while len(tas) >= 2:
            occ1, noeud1 = heapq.heappop(tas) # noeud de plus petit poids occ1
            occ2, noeud2 = heapq.heappop(tas) # noeud de deuxième plus petit poids occ2
            heapq.heappush(tas, (occ1 + occ2, {0: noeud1, 1: noeud2}))
            # ajoute au tas le noeud de poids occ1+occ2 et avec les fils noeud1 et noeud2
        return heapq.heappop(tas)[1]
    Mais quand j'essaie de l'appliquer à un dictionnaire, je reçois le message d'erreur : '<' not supported between instances of 'dict' and 'str'

    Quelqu'un sait pourquoi et comment réparer ceci ?

    Merci d'avance

    -----

  2. #2
    polo974

    Re : '<' not supported between instances of 'dict' and 'str'

    Bonjour,
    en python3, on ne peut pas comparer des str et des dict.

    les premiers éléments de ta liste sont des tuples (int, str)
    ensuite, tu veux y ajouter (de façon triée) des tuples (int, dict) et c'est là que ça coince...
    Jusqu'ici tout va bien...

  3. #3
    coco011

    Re : '<' not supported between instances of 'dict' and 'str'

    Bonsoir,

    Merci pour votre réponse.
    Je bloque un peu pour modifier la fonction, vous pensez qu'il serait judicieux de créer une nouvelle fonction qui permettrait de "comparer" des str et des dict ?

  4. #4
    pm42

    Re : '<' not supported between instances of 'dict' and 'str'

    Citation Envoyé par coco011 Voir le message
    vous pensez qu'il serait judicieux de créer une nouvelle fonction qui permettrait de "comparer" des str et des dict ?
    Et tu vas faire comment pour comparer des choux et des carottes ?

  5. A voir en vidéo sur Futura
  6. #5
    polo974

    Re : '<' not supported between instances of 'dict' and 'str'

    Citation Envoyé par pm42 Voir le message
    Et tu vas faire comment pour comparer des choux et des carottes ?
    Il faut trouver une bonne balance...
    Jusqu'ici tout va bien...

  7. #6
    coco011

    Re : '<' not supported between instances of 'dict' and 'str'

    Ah je pense que je vois où est le problème !
    Mon tas est de la forme
    Code:
    tas=[(1, 'c'), (1, 'd'), (2, 'r'), (2, 'b'), (5, 'a')]
    et ce que je veux comparer c'est non pas les 'string' mais les entiers. Je veux les comparer avec ce qui correspond à occ1+occ2 dans :
    Code:
    heapq.heappush(tas, (occ1 + occ2, {0: noeud1, 1: noeud2}))
    Le problème est donc que le tas se trie en fonction du membre de droite (string et dictionnaire) alors que je voudrais que cela se fasse en fonction du membre de gauche !

Discussions similaires

  1. Comment ouvrir 2 instances simultanées de Pdfconverter ?
    Par SirConvolution dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 15/06/2015, 12h10
  2. [Brun] TV Uppleva (Ikéa) - Video résolution not supported
    Par Glxblt dans le forum Dépannage
    Réponses: 6
    Dernier message: 05/09/2014, 09h58