如何根据元素中的值对列表进行排序?



知道列表num、num2中的值会发生变化,我们的想法是根据排序后的num2对输出列表或构成输出的列表进行排序。这是代码:

letter = ['A','B','C','D','E']
num = [7,6,1,1,1]
num2 = [24000,20900,5250,4500,5000]
output = []
for i in range(len(letter)):
output.append((letter[i], num[i], num2[i]))

电流输出:

[('A', 7, 24000), ('B', 6, 20900), ('C', 1, 5250), ('D', 1, 4500), ('E', 1, 5000)]

预期输出:

[(’A’, 7, 24000), (’B’, 6, 20900), (’C’, 1, 5250), (’E’, 1, 5000), (’D’, 1, 4500)]

zip然后排序:

output = sorted(zip(letter, num, num2), key=lambda x: x[2], reverse=True)
print(*output)

输出:

[('A', 7, 24000), ('B', 6, 20900), ('C', 1, 5250), ('E', 1, 5000), ('D', 1, 4500)]

使用列表理解也可以完全避免临时分配。

[(x, y, z) for x, y, z in sorted(zip(letter, num, num2), key=lambda thus: thus[2], reverse=True)]

结果:

[('A', 7, 24000), ('B', 6, 20900), ('C', 1, 5250), ('E', 1, 5000), ('D', 1, 4500)]

最新更新