假设我想对一个看起来像这样的列表进行排序:
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
我似乎无法使用第二个键进行比较。而且,这根本行不通。有什么帮助吗?
请注意,我无法更改输入和字典的性质,并且请不要使用内置方法进行回答。
相关分类