我的字典看起来像这样:
{James: [10, 7, 9], 'Bob': [3, 8, 4], 'Charles': [6, 2, 5]}
我想要做的是,按照获得最高分数的顺序输出每个用户的分数。并以他们的名字。目前,我只能打印得分最高的学生:
inverse = [(value, key) for key, value in score_dict.items()]
print (max(inverse)[1])
输出结果为:
James
我想要获得的输出是:
James 10
Bob 8
Charles 6
答案 0 :(得分:1)
你根本不需要你的逆字典;你并没有试图在所有的学生中找到 单一最高分;相反,您希望找到每个学生的最高分。
为此,请执行以下操作:
scores = {'James': [10, 7, 9], 'Bob': [3, 8, 4], 'Charles': [6, 2, 5]}
for name in scores.keys:
print(name + " " + str(max(scores[name])))
这避免了对新词典的需求。最复杂的部分是str(max(scores[name]))
,从最里面到最外面读取:"取名字,找到名字的得分列表,找到得分的最大值,然后转成为字符串"。
答案 1 :(得分:0)
您可以简单地创建一个使用userwise高分的元组列表,然后用分数对其进行排序。像这样的东西,
x = {'James': [10, 7, 9], 'Bob': [3, 8, 4], 'Charles': [6, 2, 5]}
y = [(k, max(v)) for k, v in x.items()]
for k, v in sorted(y, key=lambda a: a[1], reverse=True):
print (k, v)