2016-11-12 4 views
0

Ich benutze Python 3.5 und ich habe eine Liste c.Mit c.sort() TypeError: unorderable Typen: Node() <Node()

Wenn ich versuche

c.sort() ## sort the nodes by count, using the __cmp__ function defined in the node class 

ich den Fehler zu tun TypeError: unorderable types: Node() < Node()

Wissen Sie, wie dieses Problem zu lösen?

Antwort

0

In Python3 müssen Sie explizit alle Vergleichsoperatoren für eine Klasse definieren, um es sortierbar zu machen: ==, =, <, < =,> und> =:

class Node: 
    # ... 

    def __lt__(self, other): 
     # ... 

    # same for the other operators 

Klar ist das redundant, können Sie das Kopieren/Einfügen reduzieren, indem Sie eine der folgenden Aktionen ausführen.

  1. Machen Sie die Klasse namedtuple, in diesem Fall würden die Instanzen lexikographisch verglichen werden.
  2. Definieren Sie einen einzelnen Vergleichsoperator und dekorieren Sie die Klasse mit total_ordering