2

我有一个字典列表如下:

 {"id": 1, "score": some_score.. othe values}
 {"id": 1, "score": some_differetscore.. othe values}  
 {"id": 22, "score": some_score.. othe values}
 {"id": 3, "score": some_score.. othe values}

我希望得到的是遍历这个列表,使其排序如下。

该列表按“id”排序,然后按“score”反向排序

所以所有带有“id”1的条目都被合并在一起,然后得分最高的条目在顶部?我该怎么做呢?

谢谢

4

2 回答 2

8

试试这个:

sorted(mylist, key=lambda d: (d["id"], -d["score"]))
于 2012-09-19T15:42:24.190 回答
1

实际上相同,但更清晰且可单元测试:

def weight(data):
    """We sort the data first by its ID, then by descending score."""
    return data["id"], -data["score"]

sorted(mylist, key=weight)
于 2012-09-19T15:47:15.240 回答