bisect和用户定义对象列表(python 3)

时间:2010-11-15 22:31:00

标签: python python-3.x cmp bisect

在python 3之前,我使用bisect将用户定义的对象插入到列表中。 bisect对此感到满意,因为我的用户定义对象有一个def __cmp__,它定义了如何比较对象。我已经阅读了在python 3中不支持cmp的理由,我对此很好。我认为我的旧代码的修复方法是通过将其转换为元组来“装饰”我的用户定义对象

(integer, user-defined object).

但是,如果我有一个我的元组列表,请尝试...

i = bisect_left([list_of_tuples], (integer, user-defined object))

然后我收到错误“builtins.TypeError:unorderable types ...”

那么,(在python 3中)我如何将bisect用于不完全由具有自然排序顺序的项目列表?

1 个答案:

答案 0 :(得分:13)

您需要添加__lt__方法;现在这是用于比较而不是__cmp__

的内容