Python 如何根据内部值之和对嵌套字典进行排序

Python 如何根据内部值之和对嵌套字典进行排序,python,dictionary,nested,Python,Dictionary,Nested,我正在尝试按降序对嵌套字典进行排序。 这是我的字典: mydict = {'first': {1:10,3:3},'second' : {7:5}, 'thrid': {4:2,5:4}} 而想要的结果是 mydict = {'first':{1:10,3:3}, 'third': {4:2,5:4}, 'second' : {7:5}} 因为第一个内部值的和是13,第三个是6,第二个是5。 我想在列表中以相同的顺序保存它的键 mylist = {1,3,4,7,5} 这是我到目前为止试

我正在尝试按降序对嵌套字典进行排序。 这是我的字典:

mydict = {'first': {1:10,3:3},'second' : {7:5}, 'thrid': {4:2,5:4}}

而想要的结果是

mydict = {'first':{1:10,3:3}, 'third': {4:2,5:4}, 'second' : {7:5}}
因为第一个内部值的和是13,第三个是6,第二个是5。 我想在列表中以相同的顺序保存它的键

mylist = {1,3,4,7,5}
这是我到目前为止试过的

for out_key, out_value in d.items():
  for key,value in sorted(out_value,key=lambda i:sum(i[1]),reverse=True):
      answer.append(key)
这个nexted for循环给了我一个错误

'int' object is not subscriptable
我假设这是因为键不是字符串。 我应该如何修复嵌套for循环? 还是有更好的方法根据内部值的总和对嵌套字典进行排序


谢谢你

你几乎是对的。您应用了按值排序,而需要使用d项。您可以使用sorted中的键参数告诉它按值之和进行排序

mydict={'first':{1:10,3:3},'second':{7:5},'thrid':{4:2,5:4} output=dictsortedmydict.items,key=lambda x:sumx[1]。value,reverse=True 打印输出
我想出了同样的密码。您只是缺少结果列表:result=[key for e in output.values for key in e]。当然,我们需要一个最新版本的Python,因为在Python 3.7之前,并不能保证保留条目的顺序。是的,这是真的3.6+需要谢谢!这帮了大忙:在你的示例结果中,第二秒的5:5和第三秒的7:4是从哪里来的?哦,等等,我犯了一个错误,我会编辑它@卢瓦
{'first': {1: 10, 3: 3}, 'thrid': {4: 2, 5: 4}, 'second': {7: 5}}