按值对元组进行排序的 Python 程序

pythonserver side programmingprogramming更新于 2023/12/23 0:45:00

在本文中,我们将讨论如何在 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("按值排序前的元组列表元素为:")
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("按值排序后的元组列表元素为:")
for item in tupleList:
   print(f"Key : {item[0]} Value : {item[1]}")

输出

按值排序前的元组列表元素为:
Key : 2 Value : 5
Key : 1 Value : 3
Key : 17 Value : 27
Key : 0 Value : 5
Key : 4 Value : 1
按值排序后的元组列表元素为:
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])

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


相关文章