2012-09-19 175 views
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”排序,然后反向排序与“分数”

因此,所有与“ID”的条目1凑钱,然后用最上面的得分项是在顶部? 我该怎么做?

感谢

回答

8

试试这个:

sorted(mylist, key=lambda d: (d["id"], -d["score"])) 
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)