如何从python中的字典中存储多个值的键中访问值?

时间:2016-03-19 23:40:04

标签: python dictionary

我的字典看起来像这样:

{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

2 个答案:

答案 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)