python中多属性多顺序排序列表的c++排序风格

2024-04-24 08:57:08 发布

您现在位置:Python中文网/ 问答频道 /正文

listOfDict=[{“sal”:1000,“age”:25},{“sal”:1000,“age”:24}, {“萨尔”:1000,“年龄”:26},{“萨尔”:2000,“年龄”:25},{“萨尔”:3000,“年龄”:24}]

预期o/p:[{“sal”:3000,“age”:24},{“sal”:2000,“age”:25},{“sal”:1000,“age”:24},{“sal”:1000,“age”:25},{“sal”:1000,“age”:26}]

我想按工资的降序和年龄的升序来排序

我试过这样的c++风格:

def auxsort(p1data, p2data):   
    if p1data['sal'] > p2data['sal']:   
        return True
    if p1data['age'] <= p2data['age']:
        return True
    return False

sorted(listOfDict,key=auxsort)

但是python中不允许这样做。 TypeError:auxsort()正好接受2个参数(给定1个)

如何解决这个问题? 谢谢


Tags: trueagereturnif排序风格def年龄
1条回答
网友
1楼 · 发布于 2024-04-24 08:57:08

你把钥匙用错了。它应该从listOfDict中获取一个元素,并返回一些可以直接相互比较的内容。我建议如下:

def auxsort(p1data): 
    return (-p1data['sal'], p1data['age'])

它返回两个元素的元组。如果元组t1 < t2是,则表示它们对应的元素在排序后的输出中也具有这样的顺序

相关问题 更多 >