按两个值对 python dict 进行排序

Sort python dict by two values

我有以下列表的字典

d = {
    'k1':['EKAD', 444.2089, 121],
    'k2':['EKADD', 559.2358, 121],
    'k3':['KADDLG', 600.2988, 122],
    'k4':['ADDLGKG', 657.3202, 123]}

我希望首先按 value[2] 排序键,然后按 value[0] 字符串的长度排序,然后按相反的顺序排序,即输出将是 k2、k1、k3、k4。

sorted(d, key=lambda x: (d[x][2], -len(d[x][0])))

解释:

迭代字典 return 的键。因此,sorted(d, ...) 将 return 键按 key 标准

排序

key lambda 生成将用于排序比较的元组。元组使用第一个元素进行比较,然后是第二个,依此类推。如果元组用作键,它将使用第一个元素(x[2]),然后是第二个(第一个字符串的长度)等进行排序

对长度倒序,对数值不倒序,长度取反