亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按字典python列表中的值總和排序

按字典python列表中的值總和排序

精慕HU 2021-03-28 14:11:09
我有一本這樣的字典:d = {'a':[{'a1':1},{'a2':5},{'a3':4}], 'b':[{'b1':0},{'b2':1},{'b3':2}], 'c':[{'c1':1},{'c2':2}]}我想按每個list值的總和(字典中每個項目的值)對它進行排序,以便得出:r = [('a', (10, [{'a1':1},{'a2':5},{'a3':4}])),('b', (3, [{'b1':0},{'b2':1},{'b3':2}])),# 'b' and 'c' have sum of '3', so they tied here('c', (3, [{'c1':1},{'c2':2}]))]我可以天真地做到這一點。我想知道如何以更Python化的方式完成此任務。我已經嘗試過了,但是由于明顯的原因而無法正常工作:sorted(sum(d.values()), key=d.get, reverse=True)
查看完整描述

1 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

您可以嘗試以下方法:


d = {'a':[{'a1':1},{'a2':5},{'a3':4}], 'b':[{'b1':0},{'b2':1},{'b3':2}], 'c':[{'c1':1},{'c2':2}]}

new_d = {a:(sum(list(i.values())[0] for i in b), b) for a, b in d.items()}

final_result = sorted(new_d.items(), key=lambda x:x[-1][0], reverse=True)

輸出:


('a', (10, [{'a1': 1}, {'a2': 5}, {'a3': 4}])), ('c', (3, [{'c1': 1}, {'c2': 2}])), ('b', (3, [{'b1': 0}, {'b2': 1}, {'b3': 2}]))]



查看完整回答
反對 回復 2021-04-09
  • 1 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號