У меня есть функция, которая выглядит следующим образом:
def f(lst, c):
scored_vals = []
for i in lst:
scored_vals += [(i.value/i.weight, i)]
scored_vals.sort()
return scored_vals
Эта функция падает каждый раз, когда достигает scored_vals.sort()
. Аргумент lst
представляет собой список, состоящий из Item
s, где класс Item
выглядит следующим образом:
class Item():
def __init__(self, weight=0, value=0):
self.weight = weight
self.value = value
А аргумент c
является просто целым числом.
Ниже приведена ошибка:
scored_vals.sort()
TypeError: '<' not supported between instances of 'Item' and 'Item'
Я нахожу это очень странным, потому что обычно, когда вы вызываете сортировку Python, он сравнивает только первый элемент каждого кортежа, чтобы отсортировать список, так что если высоздайте список самостоятельно, как показано ниже:
lst = [(201.0, Item()), (350.0, Item()), (202.0, Item()), (100.0, Item()), (500.0, Item()), (203.0, Item())]
Затем выполните:
lst.sort()
Не выдает ошибку.