根据本地变量对python对象列表进行排序

2024-10-04 05:26:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要按局部变量对python对象列表进行排序。你知道吗

例如,我有一个类item的对象列表

class item():
    nummber1 = random.randInt(0, 100)
    nummber2 = random.randInt(0, 100)

listOfObjects = []
for i in range(0, 20)
    listOfObjects.append(item())

但是,现在我有了这个列表,我需要根据number1局部变量对它进行排序。。。你知道吗

我试过:

listOfObjects = listOfObjects.sort()

但是,这不适合按number1或number2局部变量排序。。。我真的不知道名单是按什么排序的。。。你知道吗

有人能给我指出正确的方向吗?你知道吗


Tags: 对象in列表for排序rangerandomitem
3条回答

您可以像这样使用key函数:

listOfObjects = sorted(listOfObjects, key=lambda item: item.number1)

代码中很少有小问题。但是您的问题的答案是您可以使用sorted,您可以提供用于比较列表中项目的键。你知道吗

import random

class item():
    def __init__(self):
        self.number1 = random.randint(0, 100)
        self.number2 = random.randint(0, 100)

    def __repr__(self):
        return "[" + str(self.number1) + ", " + str(self.number2) + "]"

def __str__(self):
        return self.__repr__()

listOfObjects = []
for i in range(0, 20):
    listOfObjects.append(item())

def getKey(item):
    return item.number1

print(sorted(listOfObjects, key=getKey))

样本输出:

[[3, 18], [12, 11], [12, 17], [25, 41], [32, 48], [37, 1], [44, 85], [49, 39], [53, 11], [63, 57], [67, 0], [69, 34], [70, 23], [78, 25], [78, 17], [80, 87], [85, 70], [87, 29], [95, 28], [96, 44]]

你可以做:

listOfObjects.sort(key=lambda x: x.number1)

.sort将返回None并进行适当排序

相关问题 更多 >