我正在嘗試使用 sorted 函式對 python 中的字典進行排序,但是 my_dict.items() 給了我正確的結果,而 my_dict.keys() 給了我不正確的結果
my_dict={"one":1, "two":2,"three":3, "four":4,"five":5}
sorted(my_dict.items(), key=lambda x:x[1], reverse=True)
輸出:
[('five', 5), ('four', 4), ('three', 3), ('two', 2), ('one', 1)]
以上是正確的,但我只需要鍵而不是相應的值,所以我寫道:
sorted(my_dict.keys(), key=lambda x:x[1], reverse=True)
輸出:
['two', 'four', 'one', 'five', 'three']
以上是不正確的結果,我做錯了什么?請幫助我找到正確的解決方案。
uj5u.com熱心網友回復:
您太早地丟棄了這些值-您需要它們進行排序。您可以使用第一個解決方案,然后在排序后選擇每個元組中的第一個元素:
[key for key, value in sorted(my_dict.items(), key=lambda x:x[1], reverse=True)]
uj5u.com熱心網友回復:
在第一種排序中,您將函式lambda x: x[1]應用于my_dict.items(). my_dict.items()為您提供 (key, value) 元組,因此您按值排序(在您的情況下為整數)。
在第二類中,您將函式lambda x: x[1]應用于my_dict.keys(). my_dict.keys()給你字串,所以你按每個字串中的第二個字符排序。
演示:
>>> my_dict = {"one":1, "two":2,"three":3, "four":4,"five":5}
>>> f = lambda x: x[1]
>>> my_dict.items()
dict_items([('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)])
>>> [f(x) for x in my_dict.items()]
[1, 2, 3, 4, 5]
>>> my_dict.keys()
dict_keys(['one', 'two', 'three', 'four', 'five'])
>>> [f(x) for x in my_dict.keys()]
['n', 'w', 'h', 'o', 'i']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/437142.html
