Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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,我多次使用以下方法从字典的内容生成元组列表: dispositions = list(dispositions.items()) 在这种情况下,键是患者离开急诊室的不同方式,值是这些类型的计数。现在,我想根据每个元组中的第二项对这些数据进行排序,所以我尝试了以下方法: dispositions = list(dispositions.items()).sort(key=lambda x: x[1]) 令我惊讶的是,当我运行代码时,我发现dispositions被设置为None。我试着把它分成

我多次使用以下方法从字典的内容生成元组列表:

dispositions = list(dispositions.items())
在这种情况下,键是患者离开急诊室的不同方式,值是这些类型的计数。现在,我想根据每个元组中的第二项对这些数据进行排序,所以我尝试了以下方法:

dispositions = list(dispositions.items()).sort(key=lambda x: x[1])
令我惊讶的是,当我运行代码时,我发现dispositions被设置为None。我试着把它分成两部分,如下所示:

dispositions = list(dispositions.items())
dispositions.sort(key=lambda x: x[1])

这管用!我得到了我的排序元组列表。所以,我已经解决了我的问题,但我想知道为什么第一个选项不起作用,所以我可以成为一个更好的人(更好的程序员就是更好的人)。有人能帮我吗?

列表。sort
不会返回任何内容。因此:

dispositions = list(dispositions.items()).sort(key=lambda x: x[1])
dispositions
设置为
None

另一方面,
sorted
返回一个新列表。因此,您可以使用:

dispositions = sorted(dispositions.items(), key=lambda x: x[1])

它将
dispositions
设置为已排序的元组列表。

排序
函数的工作方式与您想象的不一样。它不返回已排序的列表,而是直接修改列表以使其排序

例如,假设您有以下代码:

a = [0, 2, 1]
a.sort()
a
现在将被更改
[0,1,2]
。如果我使用了
a=a.sort()
而不仅仅是
a.sort()
,它会被设置为
None

这:

功能与此相同:

dispositions = list(dispositions.items())
dispositions = dispositions.sort(key=lambda x: x[1])
它将
dispositions
设置为
sort
返回的值,即
None

另一方面,这:

dispositions = list(dispositions.items())
dispositions.sort(key=lambda x: x[1])

不是将
dispositions
设置为
sort
的值,它只是调用
dispositions
上的
sort
函数,从而使列表按预期进行排序。

这很有意义。谢谢。大家好,欢迎来到StackOverflow。虽然下面回答了您的问题,但请注意StackOverflow用于发布非工作代码/寻求解决方案帮助。对于有效的代码,但您希望得到改进或其他解释,请使用CodeReview网站,该网站也是StackExchange网络的一部分。也有道理的欢呼。也谢谢你。
dispositions = list(dispositions.items())
dispositions.sort(key=lambda x: x[1])