显示分数

时间:2017-04-19 12:26:45

标签: python sorting

我是Python progaram的新手我正在尝试实施一个程序,它会将下面的文本从最高到最低排序

scores={}
highest_score=0.0
highest=''
lowest_score=100.0
lowest=''
average=0.0
sums=0.0

4 个答案:

答案 0 :(得分:1)

您可以找到以下条目:

lowest_score = min(scores.values())
lowest = [key for key, value in scores.items() if value == lowest_score]

highest_score = max(scores.values())
highest = [key for key, value in scores.items() if value == highest_score]

请记住,比较浮点数是否相等可能不起作用。您可能需要检查绝对差值是否小于非常小的值。

答案 1 :(得分:0)

以下代码会将文本中的名称拆分为[name, score]列表。然后,您可以使用sorted函数根据每个[name, score]列表的第二个条目对该列表进行排序:

scores = [i.split('-') for i in score_text]
scores = [[i[0], float(i[1])] for i in scores]
scores = sorted(scores, key=lambda x: x[1], reverse=True)

注意:sorted默认情况下从最低到最高排序,reverse=True排序将从最高到最低。要获得所需的输出,请先获取最大值和最小值:

max_score = max([i[1] for i in scores])
min_score = min([i[1] for i in scores])

如果得分为最大,最小或其他,则以正确的格式迭代排序的[name, score]对打印:

for i in scores:
    if i[1] == max_score:
        print 'highest score: {}  of {}'.format(i[1], i[0])
        pass

    if i[1] not in [max_score, min_score]:
        print 'score: {} of {}'.format(i[1], i[0])
        pass

    if i[1] == min_score:
        print 'lowest score: {}  of {}'.format(i[1], i[0])

答案 2 :(得分:0)

首先找到密钥更好,性能更好,因为查询值将在恒定时间内完成。

lowest_key = min(scores.keys(), key=scores.__getitem__)
highest_key = max(scores.keys(), key=scores.__getitem__)
lowest_value = scores[lowest_key]
highest_value = scores[highest_key]

答案 3 :(得分:0)

您可以创建两个列表:

  • 得分最高的
  • 得分最低的

表示score.items()中的键值:

If InStr(ActiveCell.Value, "Benchmark report") > 0 Then
    'String found in cell value
End IF

只需使用for:

打印列表
    if float(value) < lowest_score:
        lowest_score = [float(value)]
        lowest = [key]
    if float(value)=lowest_score:
        lowest_score += [float(value)]
        lowest += [key]

    if float(value) > highest_score:
        highest_score=float(value)
        highest=key  
    if float(value) = highest_score:
        lowest_score += [float(value)]
        lowest += [key]