【发布时间】:2015-02-03 16:19:39
【问题描述】:
我在尝试解决这个任务时遇到了一个问题,所以在失败了几次之后我就在这里,我想知道当一个键存储多个时,我怎么才能只打印一个键(名称)的最高值(分数)值,例如:
Rob Scored: 3,5,6,2,8
所以键是“Rob”,值是他上面的分数。我需要Rob Scored: 8 的输出,但是我仍然需要字典来存储以前的分数,然后打印每个键(名称)的平均分数。
到目前为止,我有这段代码并尝试使用max,但是我失败了。
from collections import OrderedDict
dictionary = {}
f = open('ClassA.txt', 'r')
d = {}
for line in f:
firstpart, secondpart = line.strip().split(':')
dictionary[firstpart.strip()] = secondpart.strip()
columns = line.split(": ")
letters = columns[0]
numbers = columns[1].strip()
if d.get(letters):
d[letters].append(numbers)
else:
d[letters] = list(numbers)
sorted_dict = OrderedDict(
sorted((key, list(sorted(vals, reverse=True)))
for key, vals in d.items()))
print (sorted_dict)
【问题讨论】:
-
那么到底是什么问题?
-
你检查过
list('3,5,6,2,8')之类的实际返回的内容吗? -
有什么问题,到目前为止你都尝试过什么?
-
问题是当我打印时让我们说使用
max(sorted_dict)它会禁用我建立的字母顺序,如果我在没有最大值的情况下打印它,那么它将按字母顺序打印它们但是所有分数来自从最高到最低,我只需要最高。 -
@Pythonnnnnnnnn 请参阅下面的答案。您在
list上调用max,而不是dict
标签: python sorting dictionary