2012-09-19 172 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)