簡體   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