我有Dict ={'Deblai': [100, 1], 'Blocage': [10, 4], 'Beton de propreté': [50, 2]}字典,想根據值的第二個元素(即串列)對其進行排序。
我試過OrderedDict = sorted(Dict.items(), key=lambda x: x[1][1])了,但它回傳一個有序串列而不是字典。
這就是我所期望的:
OrderedDict = {('Deblai', [100, 1]), ('Beton de propreté', [50, 2]), ('Blocage', [10, 4])}
我怎樣才能得到字典而不是 list ?
uj5u.com熱心網友回復:
您可以像這樣使用字典理解來做到這一點:
unsorted_dct ={'Deblai': [100, 1], 'Blocage': [10, 4], 'Beton de propreté': [50, 2]}
sorted_dct = {k: v for k, v in sorted(unsorted_dct.items(), key=lambda item: item[1][1])}
print(sorted_dct)
輸出:
{'Deblai': [100, 1], 'Beton de propreté': [50, 2], 'Blocage': [10, 4]}
uj5u.com熱心網友回復:
由于普通字典保留了插入鍵的順序,因此您大部分時間都在那兒;只需獲取專案串列并將其傳遞給dict建構式即可。沒有必要將其變為實際OrderedDict(是的,這是實際的事情)。
>>> my_dict = {'Deblai': [100, 1], 'Blocage': [10, 4], 'Beton de propreté': [50, 2]}
>>> sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1][1]))
>>> sorted_dict
{'Deblai': [100, 1], 'Beton de propreté': [50, 2], 'Blocage': [10, 4]}
您可能不想命名您的實體Dict和OrderedDict,因為這些是標準類的名稱(并且您應該使用snake_case而不是CamelCase無論如何命名實體)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427525.html
上一篇:SwuiftUI自定義排序
