与上一个问题相关,我需要对列表中的字典进行排序。代码是:
dict1 = [{"Name":"Ron","one":3,"two":6,"three":10}
,{"Name":"Mac","one":5,"two":8,"three":0}
,{"Name":"DUDE","one":16,"two":9,"three":2}]
我想这样当我打印字典时,它会打印得分最高的人的名字,然后是得分第二高的人的名字,然后是得分第三高的人的名字等等。 该特定列表的预期输出是: DUDE 16 #as DUDE的最高分是16,16是最高分 Ron 10 #因为 Ron 的最高分是 10,但它是第二高分 Mac 8#因为Mac的最高分是8,但他的高分是他们三个中最低分的。
任何帮助将不胜感激。
最佳答案
类似这样的吗?:
print [(x["Name"] + " " + str(max(x["one"],x["two"],x["three"])) ) for x in sorted(dict1, key=lambda row: max(row["one"],row["two"],row["three"]),reverse=True )]
>>> ['DUDE 16', 'Ron 10', 'Mac 8']
这本质上使用所有三个值中的最大值作为排序键,并将它们反向放置。然后它在列表理解语句中打印出名称和最大值。
关于python - 对列表中的字典进行排序,以便按从最高到最低的顺序输出分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368106/