如何使用2个条件属性使用插入排序对python列表进行排序?

假设我想对一个看起来像这样的列表进行排序:


arr = ['45621', '78124', '24613']

上面的列表存储了公司不同员工的 ID。我不想仅根据 ID 进行排序,而是根据与 ID 对应的属性,使用以下字典进行排序:


d = {

    '45621' : { 'rating' : 3, 'hours_worked' : 42 },

    '78124' : { 'rating' : 4, 'hours_worked' : 78 },

    '24613' : { 'rating' : 3, 'hours_worked' : 51 }

}

所以它是这样的:如果员工有更高的rating,他/她的 ID 将排在第一位。但是,如果 2 个员工有相同的rating,那么我们比较hours_worked,谁工作的多谁先。


我想自己实现一个插入排序。现在,我的代码如下所示:


def insertionSort(arr):


    for i in range(1, len(arr)):

        key = d[arr[i]]['rating']

        second_key = d[arr[i]]['hours_worked']

        j = i - 1

        while j >= 0 and key < d[arr[j]]['rating']:

            arr[j+1] = arr[j]

            j -= 1

        d[arr[j+1]]['rating'] = key 


    return arr

我似乎无法使用第二个键进行比较。而且,这根本行不通。有什么帮助吗?


请注意,我无法更改输入和字典的性质,并且请不要使用内置方法进行回答。


慕标5832272
浏览 205回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python