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))
在上述代码行中,有两个 tuples 被包裹在一个tuple中;因此,外部列表的第一项是一个 tuple ,例如,它有两个值。这里,tuple的键由值1表示,数据值由值4表示。 我们将使用索引访问内部tuple的元素以及键和值,因为我们知道现在可以使用索引访问tuple。
print(ListOfTuples[0][0])
这将输出位于外部列表的第一个元组的键。但是如果我们不知道外部列表包含多少个元素呢?在这种情况下,我们有可能遇到索引越界错误,这意味着我们试图访问不存在于元组中的元素,如果我们尝试使用索引来访问内部元素。
使用len()函数
为了解决这个问题,我们可以使用len函数来确定在使用它输出键和值之前,外部列表中有多少项。
注意,实际上值是嵌套列表的第二个元素,所以如果我们必须对元组列表进行排序,我们实际上必须比较列表中所有元组的第二个元素,并且仅在比较所有这些值之后,我们才能对它们进行排序。
由于它需要一次又一次地查看值,我们将需要嵌套的for循环。它的算法如下。
步骤
- 创建一个元组列表,每个元素都是一个包含两个值的元组,第一个是键,第二个是数据元素。
-
在排序之前打印元组列表。
-
使用“for循环”来迭代列表的元素,范围是从0到该列表的长度。
-
使用另一个嵌套循环,它将从0到列表的长度减一运行。
-
现在检查当前元素的值部分是否大于下一个元素的值部分。
-
如果是,则交换两个元素,元组。
-
如果不是,则继续下一个元素。
示例
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])
上述方法实际上是解决这个问题的最具Python风格的方式。