当我们有一个自定义对象的元组列表时,如果要按照元组中的某个属性进行排序,可以使用Python中的sorted函数以及lambda表达式来实现。
以下是按属性对自定义对象的元组进行排序的完整攻略。
创建自定义对象
首先,我们要创建一个自定义对象,该对象包含多个属性。例如,我们创建一个Person类,该类有name、age和country属性。
class Person:
def __init__(self, name, age, country):
self.name = name
self.age = age
self.country = country
def __repr__(self):
return f"{self.name} ({self.age}), {self.country}"
创建对象元组
然后,我们创建一个对象元组列表,该列表包含多个Person对象。
people = [
Person("Bill", 32, "USA"),
Person("John", 28, "USA"),
Person("Tom", 30, "UK"),
Person("Lucy", 25, "Australia"),
Person("Jack", 27, "UK")
]
按属性排序
接下来,我们要按照Person对象的age属性进行排序。使用sorted函数,将对象元组列表作为第一个参数,然后使用lambda表达式指定按age属性进行排序。最后,将reverse参数设置为True,以降序排序。
sorted_people = sorted(people, key=lambda p: p.age, reverse=True)
print(sorted_people)
输出结果:
[Bill (32), USA, Tom (30), UK, John (28), USA, Jack (27), UK, Lucy (25), Australia]
在上面的示例中,我们将reverse参数设置为True,并按age属性降序排序,这样就会最先打印年龄最大的人,然后是次大年龄、次次大年龄等。
同样,我们也可以按照其他属性排序。例如,按照name属性进行升序排序,可以使用如下代码:
sorted_people = sorted(people, key=lambda p: p.name)
print(sorted_people)
输出结果:
[Bill (32), USA, Jack (27), UK, John (28), USA, Lucy (25), Australia, Tom (30), UK]
在这个示例中,我们将reverse参数保持默认值False,并按照name属性升序排序,这样就会按照字母表顺序排列人名。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python按属性对自定义对象的元组进行排序 - Python技术站