繁体   English   中英

将列表转换为有序元组字典

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

dispositionsNone

另一方面, 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])

它将dispositionssort的返回值,即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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM