使用c.sort()TypeError:unorderable类型:Node()<节点()

时间:2016-11-12 16:13:50

标签: python-3.x nodes huffman-code

我使用的是python 3.5,我有一个列表c。

当我试图做

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

我收到错误TypeError: unorderable types: Node() < Node()

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在Python3中,您必须明确定义类的所有比较运算符,以使其可排序:==,!=,&lt;,&lt; =,&gt;和&gt; =:

class Node:
    # ...

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

    # same for the other operators

显然这是多余的,您可以通过执行以下任何操作来减少复制/粘贴。

  1. 将类设为namedtuple,在这种情况下,将按字典顺序对实例进行比较。
  2. 定义单个比较运算符并使用total_ordering
  3. 修饰类