[英]Converting List into Dictionary of Sorted Tuples
我多次使用以下方法从字典的内容生成元组列表:
dispositions = list(dispositions.items())
在这种情况下,键是患者离开急诊室的不同类型的方式,值是这些类型的计数。 现在,我想根据每个元组中的第二项对这些数据进行排序,所以我尝试了这个:
dispositions = list(dispositions.items()).sort(key=lambda x: x[1])
令我惊讶的是,当我运行代码时,我发现处置已设置为无。 我试着把它分成两部分,如下:
dispositions = list(dispositions.items())
dispositions.sort(key=lambda x: x[1])
这行得通。 我得到了排序元组的列表,所以,我已经解决了我的问题。 但我想知道为什么第一个选项不起作用,这样我才能成为一个更好的人(更好的程序员就是更好的人)? 有谁可以帮我离开这里吗?
list.sort
不返回任何内容。 所以这:
dispositions = list(dispositions.items()).sort(key=lambda x: x[1])
将dispositions
为None
。
另一方面, sorted
返回一个新列表。 所以你会使用:
dispositions = sorted(dispositions.items(), key=lambda x: x[1])
这会将dispositions
为已排序的元组列表。
sort
function 不像你想象的那样工作。 它不返回排序列表,它直接修改列表以使其排序。
例如,假设您有以下代码:
a = [0, 2, 1]
a.sort()
a
现在将更改为[0, 1, 2]
。 如果我使用a = a.sort()
而不仅仅是a.sort()
,它将被设置为None
。
这个:
dispositions = list(dispositions.items()).sort(key=lambda x: x[1])
功能与此相同:
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
function ,这会导致列表按预期排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.