Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解释一段关于字典的基本python代码的请求_Python_Sorting_Dictionary - Fatal编程技术网

解释一段关于字典的基本python代码的请求

解释一段关于字典的基本python代码的请求,python,sorting,dictionary,Python,Sorting,Dictionary,我想请你帮忙。我已经开始学习Python,但我才刚刚开始。从中,我获取了以下代码: def take_second(elem): return elem[1] random = [(2, 2), (3, 4), (4, 1), (1, 3)] take_second(random) # (3, 4) sorted(random, key = take_second) # [(4, 1), (2, 2), (1, 3), (3, 4)] 问题是,我不知道它是如何工作的,它是如何根据函

我想请你帮忙。我已经开始学习Python,但我才刚刚开始。从中,我获取了以下代码:

def take_second(elem):
  return elem[1]

random = [(2, 2), (3, 4), (4, 1), (1, 3)]

take_second(random) # (3, 4)

sorted(random, key = take_second) # [(4, 1), (2, 2), (1, 3), (3, 4)]

问题是,我不知道它是如何工作的,它是如何根据函数
take_second()
排序的。 我理解函数
take_second()
的工作原理-它总是将元素放在第一个位置(index=1)。因此,对于变量
random
,它是一个列表,它是一个元组
(3,4)
。问题开始了。接下来如何对变量
random
进行排序

很抱歉,这可能非常简单,但我已经思考了一段时间,什么都没有,说真的


有人能帮我吗?我将不胜感激。

假设您有一个常规的非嵌套列表

listy = [2,4,3,1]
然后,当您在其上运行sorted时,它将通过比较每个元素对其进行排序

listy = [1,2,3,4]
但是当你有一张这样的清单

random = [(2, 2), (3, 4), (4, 1), (1, 3)]
您可能需要指定它的排序方式。通过将函数take_second作为排序中的一个键,它允许计算机知道列表的排序依据。在这种情况下,计算机将比较每个元素中的第二个值以确定顺序,正如您在输出中所看到的,每个元组中的第二个值的顺序为1,2,3,4

sorted(random, key = take_second) # [(4, 1), (2, 2), (1, 3), (3, 4)]

如果对列表中的一个元组调用
take_second
,会发生什么情况?例如,对于元组
(3,4)
,它将元素置于位置1,在本例中为4。但是,在
random
列表中,位置4上没有元素,但有两个元组包含4,
(4,1)
(3,4)
。为什么排序时第一个值不是第二个值?sorted的
key
参数用于提取将用于对集合排序的值。在您的例子中,
take_second
只返回每个元组的第二个元素。因为4是集合中最大(第二)的值,
(3,4)
是排序时的最新项。但是,python是如何做到这一点的呢?当我们获得
(3,4)
时,我们有4个元素,这个元素将在排序的末尾-我们知道
随机
的样子。但是,python接下来做什么呢?它如何将4与其他“第二”元素进行比较?好的!因此,这种排序背后的整个逻辑是,函数定义的元素用作键,即。e<代码>take_second()(在本例中)用于排序,因此简言之,我们按照每个元组中的第二个元素对这些内容进行排序。非常感谢!!!!!然而,python是如何做到这一点的?当我们获得
(3,4)
时,我们有4个元素,这个元素将在排序的末尾-我们知道
随机
的样子。但是,python接下来做什么呢?它是如何将4与其他“第二”元素进行比较的?请检查以下内容:。Python使用快速排序算法对列表进行排序。好的,我想它是在Python内部实现的。谢谢!:)