Python程序 按属性对自定义对象的元组进行排序

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中的自定义对象,我们如何使用类来实现它。我们还看到了如何使自定义对象成为一个元组,以及如何利用排序和分类方法对其进行属性排序。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python 示例