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])