With c.sort() TypeError: unorderable types: Node() < Node()
With c.sort() TypeError: unorderable types: Node() < Node()
我正在使用 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()
你知道怎么解决吗?
在 Python3 中,您必须显式定义 class 的所有比较运算符以使其可排序:==、!=、<、<=、> 和 >=:
class Node:
# ...
def __lt__(self, other):
# ...
# same for the other operators
显然这是多余的,您可以通过执行以下任一操作来减少 copy/paste。
- 将 class 设为
namedtuple
,在这种情况下,实例将按字典顺序进行比较。
- 定义一个比较运算符并用
total_ordering
修饰class
我正在使用 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()
你知道怎么解决吗?
在 Python3 中,您必须显式定义 class 的所有比较运算符以使其可排序:==、!=、<、<=、> 和 >=:
class Node:
# ...
def __lt__(self, other):
# ...
# same for the other operators
显然这是多余的,您可以通过执行以下任一操作来减少 copy/paste。
- 将 class 设为
namedtuple
,在这种情况下,实例将按字典顺序进行比较。 - 定义一个比较运算符并用
total_ordering
修饰class