python – 检查列表列表中的重复项并对其进行排序

我有一个表格包含:

table = [[5, 7],[4, 3],[3, 3],[2, 3],[1, 3]]

并且每个列表中表示的第一个值(5,4,3,2,1)可以说是一个人的ID.表示的第二个值(7,3,3,3,3)将是一个分数.我要做的是检测第二列中的重复值,在这种情况下是列表中的3.因为4个列表有3作为第二个值,我现在想要根据第一个值对它们进行排序.

在表中,注意[1,3]有一个作为第一个值因此,它应该替换表中的[4,3]位置. [2,3]应该取代[3,3]作为回报.

Expected output: [[5,7],[1,3],[2,3],[3,3],[4,3]]

我试过:

def checkDuplicate(arr):
    i = 0
    while (i<len(arr)-1):
        if arr[i][1] == arr[i+1][1] and arr[i][0] > arr[i+1][0]:
             arr[i],arr[i+1] = arr[i+1],arr[i]
        i+=1
    return arr

checkDuplicate(table)

代码不符合我想要的输出,我希望在这个问题上得到一些帮助.

最佳答案 您可以使用按键排序.

table = [[5, 7], [4, 3], [3, 3], [2, 3], [1, 3]]

# Sorts by second index in decreasing order and then by first index in increasing order
sorted_table = sorted(table, key=lambda x: (-x[1], x[0]))

# sorted_table: [[5, 7], [1, 3], [2, 3], [3, 3], [4, 3]]
点赞