【问题标题】:How to print only the highest value for a key amongst other values?如何仅打印其他值中键的最高值?
【发布时间】: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


【解决方案1】:

只需使用python的max函数:

dict1 = { "score" : [3,5,6,2,8] }
print("Rob Scored", max(dict1["score"]))

【讨论】:

  • 是的,但是如果我有大约 20 个不同名称的文本文件,并且每个文件都有几个分数,如果我将它放入每一行的循环中,这会起作用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 2021-04-02
  • 2022-06-12
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
相关资源
最近更新 更多