Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何返回最大对象数';s序列,其中每个对象都有相同的字段和不同的值?_Python_Oop_Sequence - Fatal编程技术网

Python 如何返回最大对象数';s序列,其中每个对象都有相同的字段和不同的值?

Python 如何返回最大对象数';s序列,其中每个对象都有相同的字段和不同的值?,python,oop,sequence,Python,Oop,Sequence,假设我们有一个类的实例序列。 让我们描述一下班级 class Person: def __init__(self, name, lastname): self.name = name self.lastname = lastname 创建实例: obj1 = Person('Andrew', 'Martin') obj2 = Person('Mark', 'Levy') obj3 = Person('Harry', 'Anderson') objs =

假设我们有一个类的实例序列。 让我们描述一下班级

class Person:
    def __init__(self, name, lastname):
        self.name = name
        self.lastname = lastname
创建实例:

obj1 = Person('Andrew', 'Martin')
obj2 = Person('Mark', 'Levy')
obj3 = Person('Harry', 'Anderson')
objs = (obj1, obj2, obj3)
我想从两个字段中的元组返回最大值。如下所示:

from operator import attrgetter
max_obj = max(objs, key=(attrgetter('lastname'), attrgetter('name')))
这样的代码会引起错误

(TypeError:“tuple”对象不可调用)


那么,如何获得最大值呢?

您可以使用lambda函数将这些属性连接到密钥中:

max_obj = max(objs, key=lambda x: x.lastname.lower() + x.name.lower())
例如:

obj1 = Person('George', 'Martin')
obj2 = Person('Beth', 'Martin')
obj3 = Person('Mark', 'Levy')
obj4 = Person('Harry', 'Anderson')
objs = (obj1, obj2, obj3, obj4)

from operator import attrgetter
max_obj = max(objs, key=lambda x: x.lastname.lower() + x.name.lower())
print(max_obj.name)

Out: George
有关将函数用作
max
函数键的更多信息,请参见。

详细说明“最大值”