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运行到列表长度减1。

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

  • 如果是,则交换两个元素,即元组。

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

示例

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函数的sort方法来为相同问题编写单行解决方案。

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

上述方法实际上是解决问题的最Pythonic方法。

更新于: 2023年2月17日

156 次查看

开启您的职业生涯

通过完成课程获得认证

开始
广告