1
有沒有一種很好的方法來在python中執行此類排序功能?python通過屬性/權重差異對對象進行排序
該數組包含對象,其中每個對象都有一個權重值。
我很感激像Javascript sort。
我試着這樣做cmp
但碰上這樣的錯誤:
TypeError: comparison function must return int, not float
有沒有一種很好的方法來在python中執行此類排序功能?python通過屬性/權重差異對對象進行排序
該數組包含對象,其中每個對象都有一個權重值。
我很感激像Javascript sort。
我試着這樣做cmp
但碰上這樣的錯誤:
TypeError: comparison function must return int, not float
使用Python的內置sorted
功能與lambda
,並把結果轉換爲整數。
sorted_list = sorted(unsorted_iterable, lambda x, y: int(x.weight - y.weight))
這是行不通的。將值轉換爲'int'會將0.5和-0.5截斷爲0,如果它們的權重之差小於1,那麼排序會將x和y看作相等。您可以考慮使用內置的'cmp'函數來使用浮點數的默認比較,但最合適的解決方案使用'sorted'的關鍵字參數'key'。 [(請參閱文檔)](https://docs.python.org/2.7/library/functions.html#sorted) –