TypeError:'top_list'对象不支持索引

时间:2015-05-06 18:14:32

标签: python list

我想打印出按第二个元素排序的列表。

TypeError: 'top_list' object does not support indexing

有没有人可以帮助我?

class top_list(object):

    def __init__(self, name, hit_rate):
        self.name = name
        self.hit_rate = float(hit_rate)

    def __str__(self):
        return "{0} {1}".format(self.name, self.hit_rate)


def top_ten():

    """Prints out the list"""
    top10 = []
    file = open("high_score.txt")
    for i in range(0,1):
        x = file.readlines()
    for line in x:
        line = line.split(",")
        lista = top_list(line[0], float(line[1]))
        top10.append(lista)

    a = sorted(top10, key=lambda line: line[1])
    print(a)

1 个答案:

答案 0 :(得分:3)

在您的代码中

p -> (p.getEmail().equals(null))

您正尝试使用下标表示法访问top_list元素。如果这是您想要的,请实施a = sorted(top10, key=lambda line: line[1]) 方法。 __getitem__允许您使用下标运算符 - __getitem__转换为list[1]

list.__getitem__(1)

或者修改lambda函数以访问所需的元素而不使用下标:

def self.__getitem__(self, key):
    if key == 1:
        return self.name
    else:
        return self.hit_rate

另请注意,使用文件的上下文管理器更安全,更pythonic。您还可以通过迭代Python文件对象来读取行:

a = sorted(top10, key=lambda line: line.hit_rate)

但需要格外小心处理新行(可能剥离它们)。