我得到了一个元组列表如下:
[['1', '2', '2'], ['1', '3', '2'], ['1', '6', '3'], ['1', '8', '46'], ['1', '9', '1'], ['1', '10', '3'], ['2', '1', '7'], ['2', '3', '23'], ['2', '4', '2'], ['2', '5', '5'], ['2', '6', '30'], ['2', '7', '1'], ['2', '8', '26'], ['2', '9', '12'], ['2', '10', '24'], ['2', '11', '10'], ['2', '12', '9'], ['2', '13', '6'], ['2', '14', '9'], ['3', '1', '8'], ['3', '2', '27'], ['3', '4', '3'], ['3', '5', '6']...]
我想根据元组的第三个元素的值以降序对其进行排序。 我尝试了以下代码:
demands.sort(key=lambda tup:tup[2], reverse=True)
但我不认为它是一个想要的。这是输出:
[['10', '3', '93'], ['10', '8', '93'], ['10', '2', '90'], ['2', '12', '9'], ['2', '14', '9'], ['10', '13', '9'], ['8', '3', '87'], ['8', '2', '85'], ['3', '1', '8'], ['6', '1', '8'], ['10', '7', '8'], ['8', '10', '78'], ['2', '1', '7'], ['3', '13', '7'], ['6', '13', '7'], ['8', '7', '7'], ['9', '8', '7'], ['9', '10', '7'], ['2', '13', '6'], ['3', '5', '6'], ['6', '5', '6'], ['10', '9', '56'], ['8', '9', '52'], ['2', '5', '5'], ['9', '6', '5'], ['11', '8', '5'], ['11', '10', '5'], ['12', '8', '5'], ['12', '10', '5'], ['14', '8', '5'], ['1', '8', '46'], ['10', '11', '43'], ['10', '12', '42'], ['8', '11', '40'], ['12', '6', '40'], ['9', '2', '4'], ['9', '3', '4'], ['11', '6', '4'], ['14', '10', '4'], ['8', '12', '39'], ['10', '14', '38'], ['3', '6', '36'], ['8', '14', '36'], ['6', '8', '33'], ['3', '8', '31'], ['2', '6', '30'], ['6', '10', '30'], ['10', '1', '30'], ['1', '6', '3'], ['1', '10', '3'], ['3', '4', '3'], ['6', '4', '3'], ['11', '2', '3'], ['11', '3', '3'], ['12', '2', '3'], ['12', '3', '3'], ['13', '8', '3'], ['13', '10', '3'], ['14', '3', '3'], ['14', '6', '3'], ['3', '10', '29'], ['6', '3', '28'], ['8', '1', '28'], ['3', '2', '27'], ['6', '2', '27'], ['2', '8', '26'],....]
ps:我还尝试使用sorted函数和itemgetter方法对其进行排序。我得到了与上面相同的ouptut。 你能帮忙吗?
提前谢谢
答案 0 :(得分:0)
好像你按字母顺序而不是按数值排序。尝试
demands.sort(key=lambda tup:int(tup[2]), reverse=True)
答案 1 :(得分:0)
按字典顺序对列表进行排序,需要将最后一个元素转换为int
:
>>> l
[['2', '12', '9'], ['2', '14', '9'], ['3', '1', '8'], ['2', '1', '7'], ['2', '13', '6'], ['3', '5', '6'], ['2', '5', '5'], ['1', '8', '46'], ['2', '6', '30'], ['1', '6', '3'], ['1', '10', '3'], ['3', '4', '3'], ['3', '2', '27'], ['2', '8', '26'], ['2', '10', '24'], ['2', '3', '23'], ['1', '2', '2'], ['1', '3', '2'], ['2', '4', '2'], ['2', '9', '12'], ['2', '11', '10'], ['1', '9', '1'], ['2', '7', '1']]
>>> l.sort(key=lambda tup:int(tup[2]), reverse=True)
>>> l
[['1', '8', '46'], ['2', '6', '30'], ['3', '2', '27'], ['2', '8', '26'], ['2', '10', '24'], ['2', '3', '23'], ['2', '9', '12'], ['2', '11', '10'], ['2', '12', '9'], ['2', '14', '9'], ['3', '1', '8'], ['2', '1', '7'], ['2', '13', '6'], ['3', '5', '6'], ['2', '5', '5'], ['1', '6', '3'], ['1', '10', '3'], ['3', '4', '3'], ['1', '2', '2'], ['1', '3', '2'], ['2', '4', '2'], ['1', '9', '1'], ['2', '7', '1']]