Python程序用于根据属性对自定义对象元组进行排序
现在让我们深入了解 Python 中的自定义对象是什么。我们知道 Python 为我们提供了许多预定义的数据类型,可用于存储各种类型的数据。但有时我们需要定义自定义数据类型来存储无法用内置数据类型表示的数据。
为此,Python 为我们提供了“类”,这些类有助于我们自定义和创建适合我们需求的数据类型。一个类可以拥有数据和函数来实现某些行为。在 Python 中实现类的示例如下:
class TempClass: self.name = "" self.age = 0
上面给出了一个类的示例,该类名为“TempClass”,并存储名称和年龄,其默认值分别为“”和 0。我们使用 self 来定义我们正在访问类的特定实例的值,并使用点“.”运算符来访问类的元素。
现在我们知道了 Python 中的自定义对象是什么,我们将了解自定义对象元组的含义。当元组的所有元素都是自定义对象(类实例)时,我们就说我们有一个自定义对象元组。
对于下面的示例,我们将考虑一个类,该类具有名称和年龄作为其数据成员。我们将创建一个仅包含此类对象的元组。
使用 sort() 函数
sort() 函数是 Python 的一个内置函数,它以列表、映射、集合或元组的名称作为参数,并对数据结构进行排序。
要使用 sort 函数对元组进行排序,我们将不得不使用类型转换。思路是将类对象存储在一个未排序的元组中,然后使用此元组并创建一个名称列表并对其进行排序。使用此排序的名称列表按名称对整个元组进行排序。
算法
步骤 1 – 将元组中元素的数量作为用户输入
步骤 2 – 使用 for 循环存储所需的对象数量,在每次迭代中输入名称和年龄,并使用输入值作为其数据元素存储一个类对象。
步骤 3 – 创建一个名为 sortedNames 的列表,并遍历 unsortedTuple,将每个对象的全部名称元素存储在 sortedNames 列表中
步骤 4 – 对 sortedNames 列表使用 sort 函数,现在我们有一个包含按排序顺序排列的名称的列表
步骤 5 – 创建一个名为 tuple 的排序元组,使用 for 循环遍历 sortedNames 列表
步骤 6 – 使用另一个嵌套的 for 循环遍历 unsortedTuple
步骤 7 – 检查元组当前对象的名称部分是否与 sortedNames 列表中的名称相同
步骤 8 – 如果是,则将当前对象存储在 sortedTuple 列表中,并退出内部循环
步骤 9 – 如果否,则继续处理 unsorted tuple 的下一个对象
步骤 10 – 打印 sortedTuple 的元素
示例
让我们来看一个例子:
class MyTuple: def __init__(self, name, age) -> None: self.name = name self.age = age unsortedTuple =( MyTuple("Vijay",23) , MyTuple("Aman",27), MyTuple("Aastha",21) ) print("Tuple before sorting by names are : ") for person in unsortedTuple: print(f"Name : {person.name} Age : {person.age}") sortedTuple = sorted(unsortedTuple, key= lambda person: person.name) print("Tuple after sorting by names are : ") for person in sortedTuple: print(f"Name : {person.name} Age : {person.age}")
输出
Tuple before sorting by names are : Name : Raj Age : 23 Name : Aman Age : 21 Name : Suraj Age : 26 Tuple after sorting by names are : Name : Aman Age : 21 Name : Raj Age : 23 Name : Suraj Age : 26
使用带 key 属性的 sorted() 方法
或者,我们也可以使用 Python 的内置方法 sorted 方法以及 key 属性来根据属性对元组进行排序。
此函数返回指定可迭代对象的排序列表。key 属性接收一个函数(通常是 lambda 函数),并根据这些键对可迭代对象进行排序。
示例
让我们来看一个例子:
class MyTuple: def __init__(self, name, age) -> None: self.name = name self.age = age unsortedTuple =( MyTuple("Vijay",23) , MyTuple("Aman",27), MyTuple("Aastha",21) ) print("Tuple before sorting by names are : ") for person in unsortedTuple: print(f"Name : {person.name} Age : {person.age}") sortedTuple = sorted(unsortedTuple, key= lambda person: person.name) print("Tuple after sorting by names are : ") for person in sortedTuple: print(f"Name : {person.name} Age : {person.age}")
输出
Tuple before sorting by names are : Name : Vijay Age : 23 Name : Aman Age : 27 Name : Aastha Age : 21 Tuple after sorting by names are : Name : Aastha Age : 21 Name : Aman Age : 27 Name : Vijay Age : 23
结论
在本文中,我们了解了 Python 中的自定义对象是什么,以及如何使用类来实现它。我们还了解了如何创建自定义对象元组以及如何使用 sort 和 sorted 方法根据属性对其进行排序。