我想對字典串列進行排序。問題是字典中的鍵不一樣,但每個字典肯定只有一個專案。例如,[{'foo':39}, {'bar':7}, {'spam':35}, {'buzz':4}]
這里,key 是人名,value 是年齡。我想要結果,因為[{'buzz': 4}, {'bar': 7}, {'spam': 35}, {'foo': 39}]
我正在做的是:
def get_val(d):
for k, v in d.items():
return v
sorted_lst = sorted(lst, key=lambda d: get_val(d))
有沒有更好的解決辦法?
uj5u.com熱心網友回復:
您可以使用的值dict在lambda象下面這樣:
>>> lst_dct = [{'foo':39}, {'bar':7}, {'spam':35}, {'buzz':4}]
>>> sorted(lst_dct, key=lambda x: list(x.values()))
[{'buzz': 4}, {'bar': 7}, {'spam': 35}, {'foo': 39}]
您可以擴展此范圍以使用具有多元素的串列:
>>> lst_dct = [{'foo':[39, 40]}, {'bar':[7,8]}, {'spam':[4,5]}, {'buzz':[4,6]}]
>>> sorted(lst_dct, key=lambda x: sorted(x.values()))
[{'spam': [4, 5]}, {'buzz': [4, 6]}, {'bar': [7, 8]}, {'foo': [39, 40]}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334165.html
