我有一个类型嵌套的字典
{id_1 : [ {id_2:score},{id_3:score_2} .... and so on],id_2 :[{id_1:Score_!....]}
所以基本上是一个嵌套字典 现在我想根据得分对每个主要ID进行排序 所以基本上
{id_1: [{element with max_score},{element_with next max_score....}]... id_2:[{element_with max_score},{element_with next maxx score}...]
此外,该函数应该采用参数say(n)返回前n个匹配或者如果n<该id的元素数量然后返回完整列表 任何想法/想法.. 感谢
答案 0 :(得分:3)
您可以使用key
参数list.sort()
。假设外部字典名为d
,代码可能如下所示:
for scores in d.itervalues():
scores.sort(key=lambda x: next(x.itervalues()), reverse=True)
lambda函数只是提取字典的单个值。
我认为你最好不要使用元组而不是字典作为列表的值:
{id_1: [(id_2, score_2), (id_3, score_3),...], id_2: [(id_1, score_1),...]}
使用此数据结构,排序代码将是
for scores in d.itervalues():
scores.sort(key=lambda x: x[1], reverse=True)
或等效,但稍快一点
for scores in d.itervalues():
scores.sort(key=operator.itemgetter(1), reverse=True)