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方法。