ValueError:max()arg是一个空序列 - 在文本文件中对数据进行排序

时间:2016-03-15 15:43:13

标签: python list sorting

到目前为止我的代码,但是当我尝试运行它时。它向我显示错误代码ValueError: max() arg is an empty sequence

文本文件中的数据按如下顺序排序:

Kevin 2 3 6 
Mary 8 6 6 
Ollie 9 7 3

我的代码似乎按字母顺序排列此组,或者将其排序为最高分数。

from __future__ import division
from operator import attrgetter


class Player(object):
    def __init__(self, name, scores):
        self.name = name
        self.scores = scores
        self.highscore = max(scores)
        self.avgscore = sum(scores) / len(scores)

with open('classFilea.txt') as f:
    players = []
    for line in f:
        elems = line.split(',')
        players.append(Player(elems[0], map(int, elems[1:])))

    byhighscore = sorted(players, key=attrgetter('highscore'), reverse=True)
    byavg = sorted(players, key=attrgetter('avgscore'), reverse=True)

    print('')
    for p in byhighscore:
        print('{0} {1:g}'.format(p.name, p.highscore))

    print('')
    for p in byavg:
        print('{0} {1:g}'.format(p.name, p.avgscore))

2 个答案:

答案 0 :(得分:2)

似乎构造函数中的“得分”参数为空。所以,你的文件中有一行没有','。

我会猜测并说文件末尾有一个空行。

答案 1 :(得分:1)

这一行必定出错/意外的数据格式:

players.append(Player(elems[0], map(int, elems[1:])))

导致此行出错:

self.highscore = max(scores)

无论map(int, elems[1:])返回的是一个空序列。尝试在那之前添加print语句,或在print(name, scores)课程中添加Player,以帮助诊断问题所在。