按嵌套字典中的值对字典排序



我有一个这样的字典:

dic = {"first_a" : { "first_b" : {10, 2} } , "second_a" : {"second_b" : {13, 15} } [...] }

我想根据first_b和second_b值的总和对嵌套字典进行排序。我真搞不懂这个,谁能帮帮我?我曾尝试使用sorted()函数,但未能找到合适的lambda函数用作关键..

假设您打算有一个这样的字典:

data = {'a': {'b': {2, 10}}, 'c': {'d': {13, 15}}}

你可以这样得到你想要的:

sorted(data, key =lambda k: sum(*dic[k].values()), reverse=True)

然而,我认为这不是很好读。我将改为:

def get_sum(k):
vals, *_ = data[k].values()
return sum(vals)
sorted(data, key=get_sum, reverse=True)

当我在深夜看代码时,太多的括号==太长,弄不清楚发生了什么。

请注意,我使用values()是因为我不知道您的内部键是否为常数。如果是的话,生活就更容易了。注意,这对进行操作和排序。

最新更新