我是Python progaram的新手我正在尝试实施一个程序,它会将下面的文本从最高到最低排序
scores={}
highest_score=0.0
highest=''
lowest_score=100.0
lowest=''
average=0.0
sums=0.0
答案 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]