我试图使用合并排序算法对第二个索引上的数字后的元组列表进行排序,但我不确定如何进行排序
这是我试图排序的元组列表:
list_of_tuples = [('Birds of Prey', 97.1),
('Dolittle', 175.0),
('The Gentlemen', 7.0),
('Falling', 22.0)]
我可以实现一个通用的合并排序算法,但我不能按照第二个索引元组中的数字排序
这是我对常规合并排序的实现:
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
merge_sort(left)
merge_sort(right)
i = j = k = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
arr[k] = left[i]
i += 1
else:
arr[k] = right[j]
j += 1
k += 1
while i < len(left):
arr[k] = left[i]
i += 1
k += 1
while j < len(right):
arr[k] = right[j]
j += 1
k += 1
return arr
我怎样才能使它适合这个问题
首选的答案是,它返回的元组末尾的数字最高,因此结果将是('Dolittle', 175.0)
您可以在Python's sort implementation后面添加一个
key
参数:那么您所需要做的就是:
res = merge_sort(list_of_tuples, key=lambda x: x[1])
或者使用python的排序实现:
res = sorted(list_of_tuples, key=lambda x: x[1])
相关问题 更多 >
编程相关推荐