Python 排序某个值

Python 排序某个值,python,class,sorting,Python,Class,Sorting,所以基本上有三个等级一个是X光,另一个等级,还有城镇。基本上,otherclass为每个对象创建数据属性,然后假设X射线读取文件,为每行的每个项目创建一个对象,并将其附加到self列表中。然后我必须创建一些函数来对数据进行排序。例如,我必须按身高对每个人进行分类。这就是我被卡住的地方,因为我怎么称呼它为基于高度的排序?所以基本上,当我说x=xrayfile,town,然后是x.sort1时,它会打印每个按高度排序的人。类用于对象,而不是将代码分组在一起。模块将代码分组在一起。这与其他一些语言(如

所以基本上有三个等级一个是X光,另一个等级,还有城镇。基本上,otherclass为每个对象创建数据属性,然后假设X射线读取文件,为每行的每个项目创建一个对象,并将其附加到self列表中。然后我必须创建一些函数来对数据进行排序。例如,我必须按身高对每个人进行分类。这就是我被卡住的地方,因为我怎么称呼它为基于高度的排序?所以基本上,当我说x=xrayfile,town,然后是x.sort1时,它会打印每个按高度排序的人。类用于对象,而不是将代码分组在一起。模块将代码分组在一起。这与其他一些语言(如Java)的工作方式不同

然而,按属性排序并不困难。试试这个:

class otherclass:
    def __init__(self,instance,town):
        list=[]
        for i in line.split(','):
            list.append(i)
        self.firstname = str(list[0])
        self.height = int(list[1])
    def__str__(self):
       return '%s %d' %(self.firstname,self.height)

class xray(list):
    def __init__(self, file, town):
        self.file=open(file)
        line=self.file.readlines()
        line1= line[10:]
        for g in line:
            self.append(otherclass(g,town))
    def sort1(self):
        #sort function here
stdlib sort函数接受一个kwarg命名的键,该键接受一个函数来运行排序。在本例中,它遍历列表假人,拉出列表中的每个元素,将其指定给x,然后返回x.height。它根据键函数返回的值对元素进行排序,因此所有元素都将根据其高度进行排序

或者,您可以在对象中实现_cmp__

class Dummy(object):
    def __init__(self,name,height):
        self.name = name
        self.height = height

Adam = Dummy("Adam",72)
Steve = Dummy("Steve",71)
user3521527 = Dummy("user3521527",90) # damn you're tall.

dummies = [Adam,Steve,user3521527]
sorted_dummies = sorted(dummies, key = lambda x: x.height)

你为什么转载这个?我想知道如何根据高度对我的输出进行排序,这不是我要问的。你发布了这个问题,得到了一些反对票,删除了那个帖子,并创建了一个新帖子。你为什么那样做?请不要那样做;有一些自动系统会对你的这种行为进行惩罚,社区也可能会对重新发布做出模糊的反应。哎哟,在我阅读评论之前,他写了一个冗长的回答,意识到他不值得这样做。该死
class Dummy(object):
    def __init__(self,name,height):
        self.name = name
        self.height = height
    def __cmp__(self,other):
        """self < other if self.height < other.height"""
        if self.height < other.height: return -1
        elif self.height == other.height: return 0
        elif self.height > other.height: return 1
>>> Adam < Steve
True
>>> Adam < user3521527
False