我有一个字典列表如下:
{"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的条目都会聚在一起,然后最高分的条目位于顶部? 我该怎么做?
由于
答案 0 :(得分:8)
试试这个:
sorted(mylist, key=lambda d: (d["id"], -d["score"]))
答案 1 :(得分: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)