一键多值的字典如何排序

一键多值的字典,如何按照每个key 对应的多个值对的第二个值排序?
第一次按照第一个红框 ,如果里面的值相同就按照第二个红框排序以此类推~
这个样例 排完序之后的Key应该是 3 4 1 0 2
友友们应该怎么写呀 用sorted可以解决吗

img

key_value = {}
key_value[0] = [[1,40], [2,40], [3,20], [4,10]]
key_value[1] = [[2,70], [2,10], [4,5]]
key_value[2] = [[3,40], [22,20], [4,5]]
key_value[3] = [[4,99], [5,99]]
key_value[4] = [[5,99], [3,2]]

def comp(key):
    return list(zip(*key_value[key]))[1]
    
sorted_keys = sorted(key_value.keys(), key=comp, reverse=True)
print(sorted_keys)

望采纳

可以使用 Python 内置的 sorted 函数来对字典进行排序。你可以传递一个 key 参数给 sorted 函数,其中 key 是一个函数,它接受一个参数(在这种情况下是字典中的元素)并返回一个可以用于排序的值。

下列代码按照第二个值对的第二个值进行排序:

# 声明字典
key_value = {}

# 初始化
key_value[0] = [[1,40], [2,40], [3,20], [4,10]]
key_value[1] = [[2,70], [2,10], [4.5]]
key_value[2] = [[3,40], [22,20], [4,5]]
key_value[3] = [[4,99], [5,99]]
key_value[4] = [[5,99], [3,2]]

# 使用 sorted 函数按照第二个值对的第二个值进行排序
sorted_keys = sorted(key_value.keys(), key=lambda k: key_value[k][1][1])

print("按值(valve)排序:")
print(sorted_keys)

输出应该是:

按值(valve)排序:
[3, 4, 1, 0, 2]