1 回答

TA貢獻1906條經(jīng)驗 獲得超10個贊
我在評估時也有這個問題。問題是 的輸入items是字符串的二維列表,而不是[name: string, relevance: int, price: int]. 因此,當您調(diào)用 sort 時,您正在對數(shù)字字符串而不是實際數(shù)字進行排序,這會導(dǎo)致意外的結(jié)果。例如:
>>> nums = list(range(1, 6)) + list(range(10, 60, 10))
>>> nums = list(map(str, nums))
>>> nums
['1', '2', '3', '4', '5', '10', '20', '30', '40', '50']
>>> nums.sort()
>>> nums
['1', '10', '2', '20', '3', '30', '4', '40', '5', '50']
一個小的修復(fù)是更改關(guān)鍵函數(shù),以便將相關(guān)性和價格(第 1 列和第 2 列)轉(zhuǎn)換為整數(shù),同時保留名稱(第 0 列)。
sortedItems = sorted(items, key=lambda item: int(item[sortParameter]) if sortParameter else item[sortParameter], reverse=sortOrder)
添加回答
舉報