Python程序 对一个元组按值排序

Python程序 对一个元组按值排序

在这篇文章中,我们将讨论如何在Python中按值对 元组 进行排序。元组是一种类似于列表的数据结构,但它是不可改变的,这意味着一旦它被创建,我们就不能改变其中元素的值。

例子

下面是一个创建元组的例子:

tple = ("Hello", "world", "hi")
print(tple)

输出

(“Hello”, “world”, “hi”)

有序的、不可变的三联体项目可以有多个值。索引[0]被分配给一个三联体中的第一个项目,[1]被分配给第二个项目,以此类推。

当我们提到一个元组被排序时,我们意味着这些元素被放在一个特定的顺序中。

由于元组的不可更改性,一旦它们被创建,就不能改变、增加或删除它们的任何组件。

例子

元组中允许有重复的值-

tple = ("apple", "banana", "cherry", "apple", "cherry")
print(tple)

输出

(‘apple’, ‘banana’, ‘cherry’, ‘apple’, ‘cherry’

元组中的键和值

键和值在元组中通常不作为一对存在,因为它们只被用来保存任何特定对象的单一实例。另一方面,要制作一个包含键和值的元组,我们必须创建相互嵌套的元组。

因此,每个元组中的第一个值将代表其键,第二个值将代表其值。

例子

ListOfTuples = ((1, 4), (3, 5), (4, 5), (5, 6))

在上面的代码行中,两个 元组 被包围在一个元组中;结果,例如外层列表的第一个项目是一个有两个值的 元组 。这里,元组的键分别用值1表示,其数据值用值4表示。

我们将使用索引来访问内部元组元素以及键和值,因为我们知道现在可以使用索引来访问一个元组。

print(ListOfTuples[0][0])

这将输出外层列表的第一个元组的键的位置。但是如果我们不知道外层列表包含多少个元素呢?如果我们在这种情况下使用索引试图到达内部元素,我们就会遇到索引超出范围的危险,这表明我们试图访问元组中不存在的元素。

使用len()函数

为了解决这个问题,我们可以使用len函数来确定外部列表中有多少个项目,然后再使用它来输出这些组件的键和值。

注意,值实际上是嵌套列表的第二个元素,所以如果我们要对元组列表进行排序,实际上我们必须比较作为列表内所有元组的第二个元素的值,只有在比较了所有这些值之后,我们才能对它们进行排序。

由于这需要一次又一次地查看这些值,我们将需要嵌套for循环。同样的算法如下。

算法

  • 创建一个元组列表,其中的元素是两个值的元组,第一个是键,第二个是数据元素。

  • 在排序前打印元组列表。

  • 使用 “for 循环 “来遍历列表中的元素,从0到该列表的长度。

  • 使用另一个嵌套循环,从0到比列表长度少一个的地方运行。

  • 现在检查当前元素的值部分是否比下一个元素的值部分大。

  • 如果是,交换这两个元素,tuples。

  • 如果不是,继续下一个元素。

例子

tupleList = [(2, 5), (1, 3), (17, 27), (0, 5), (4, 1)]
print("The elements of tuple list before sorting by values are : ")
for item in tupleList:
   print(f"Key : {item[0]} Value : {item[1]}")
for i in range(len(tupleList)):
   for j in range(len(tupleList) - 1):
      if tupleList[j][1] > tupleList[j+1][1]:
         tupleList[j], tupleList[j+1] = tupleList[j+1], tupleList[j]
print("The elements of tuple list after sorting by values are : ")
for item in tupleList:
   print(f"Key : {item[0]} Value : {item[1]}")

输出

The elements of tuple list before sorting by values are :
Key : 2 Value : 5
Key : 1 Value : 3
Key : 17 Value : 27
Key : 0 Value : 5
Key : 4 Value : 1
The elements of tuple list after sorting by values are :
Key : 4 Value : 1
Key : 1 Value : 3
Key : 2 Value : 5
Key : 0 Value : 5
Key : 17 Value : 27

总结

在这篇文章中,我们看到了使用嵌套循环来对一个元组按其值进行排序。另外,我们也可以利用带有 lambda函数 的排序方法,为同一问题编写一个单行解决方案。

TupleWithKeys.sort(key=lambda item: item[1])

上面的方法实际上是解决这个问题的最pythonic方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python 示例