我想打印出按第二个元素排序的列表。
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)
答案 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)
但需要格外小心处理新行(可能剥离它们)。