2010-11-15 45 views
1

在python 3之前,我使用bisect將用戶定義的對象插入到列表中。 bisect對此很滿意,因爲我的用戶定義的對象有一個def __cmp__,它定義瞭如何比較對象。我已經閱讀了不支持Python 3中的cmp的基本原理,我對此很滿意。我想我的老代碼的修復將是把它變成一個元組bisect和用戶定義對象列表(python 3)

(integer, user-defined object). 

但是,如果我有我的元組的列表,以「裝飾」我的用戶定義的對象,並嘗試...

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

然後我得到一個錯誤「builtins.TypeError:unorderable類型......」

所以,(在Python 3)我怎麼使用平分了不與完全由事物的物品清單自然排序順序?

回答

12

您需要添加一個__lt__方法;這是現在用於比較而不是__cmp__

+0

doh!我一直在想它...... – Mike 2010-11-16 02:37:05

+5

P.S.我認爲你可以把這個標誌作爲讓我聲譽的問題的答案,並且顯然使人們更有可能回答你未來的問題。 – novalis 2010-11-16 20:34:54