Python程序 按属性对自定义对象的元组进行排序
现在让我们深入了解什么是python中的自定义对象。我们知道,Python为我们提供了很多预定义的数据类型,可以用来存储各种类型的数据。但有时我们必须定义自定义数据类型,以存储不能用内置数据类型表示的数据。
为此,Python为我们提供了 “类”,这些类帮助我们定制和创建适合我们需求的数据类型。一个类可以有数据和函数来实现一些行为。一个在python中实现类的例子如下
class TempClass:
self.name = ""
self.age = 0
上面给出了一个类的例子,它的名字是 “TempClass”,并存储了名字和年龄,其默认值分别为””和0。我们使用self来定义我们正在访问一个类的特定实例的值,而点’.’操作符则用来访问一个类的元素。
现在我们知道了什么是 python 中的自定义对象,现在我们来看看自定义对象的元组是什么意思。当一个元组的所有元素都是自定义对象的类实例时,我们就说我们有一个自定义对象的元组。
在下面的例子中,我们将考虑一个有名字和年龄作为其数据成员的类。我们将制作一个只包含这个类的对象的元组。
使用sort()函数
sort()函数是一个内置的Python函数,它以list、map、set或tuple的名称为参数,对数据结构进行排序。
为了使用sort函数对元组进行排序,我们将不得不使用类型转换。我们的想法是将类对象存储在一个未经排序的元组中,然后使用这个元组创建一个名称列表并对其进行排序。使用这个排序后的名字列表,按名字对整个元组进行排序。
算法
第1步 - 将元组中的元素数量作为用户输入
第2步 - 使用for循环来存储所需的对象数量,在每次迭代时输入姓名和年龄,并存储一个以输入值为数据元素的类对象。
第3步 - 创建一个名为sortedNames的列表,遍历未排序的元组,并将每个对象的所有名称元素存储在sortedNames列表中。
第4步 --在sortedNames列表上使用排序函数,现在我们有一个包含按排序的名字的列表。
第5步 --创建一个名为tuple的sortedTuple,使用for循环遍历sortedNames列表
第6步 - 使用另一个嵌套的for循环,遍历未排序的Tuple
第7步 --检查tuple的当前对象的名称部分是否与sortedNames列表中的名称相同
第8步 - 如果是,那么将当前对象存储在sortedTuple列表中,并跳出内循环
第9步 --如果不是,则继续处理未排序元组的下一个对象
第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
使用带有键属性的 sorted() 方法
另外,我们也可以使用 sorted 方法,这是 python 内置的方法,带有 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中的自定义对象,我们如何使用类来实现它。我们还看到了如何使自定义对象成为一个元组,以及如何利用排序和分类方法对其进行属性排序。