在Python类中对列表进行排序

时间:2012-12-23 17:55:14

标签: list class python-3.x

我创建了以下

class uniquePlayers():

    def __init__(self):
        self._item = [ [] for i in range(5) ]
        self.count = 0

    def addPlayer(self, firstInstance, firstName, lastName, Country, long):
        self._item[0].append(firstInstance)
        self._item[1].append(firstName.lower())
        self._item[2].append(lastName.lower())
        self._item[3].append(Country)
        self._item[4].append(long.lower())
        self.count += 1

    def sortByKey(self, index = 4 ):
        self._item[index].sort()

我正在尝试对整个班级进行排序,保留其他列表中的所有内容。显然我所做的只是排序“长”列表

1 个答案:

答案 0 :(得分:0)

您应该将属于一起的数据保存在一起。因此,不是每个具有一个属性的5个列表,而是拥有包含所有玩家数据的单个列表:

def __init__(self):
    self._players = []

def addPlayer(self, firstInstance, firstName, lastName, Country, long):
    player = (firstInstance, firstName.lower(), lastName.lower(), Country, long.lower())
    self._players.append(player)

def sortByKey(self, index=4):
    self._players.sort(key=lambda x: x[index])

您还可以使用named tuple作为播放器数据,更轻松地访问它,甚至更好,为玩家引入新类型(类)。