如何对嵌套字典按内部指定键('c')的键值进行降序排序
按嵌套字典指定键值降序排序的解决方案
嘿,我来帮你搞定这个排序小问题!先说说你之前代码里的问题:sample.items()返回的每一个item是**(外层键, 嵌套字典)**的元组,你直接写lambda item: item['c']会找不到键,得先拿到元组里的嵌套字典(也就是item[1]),再取它的'c'值才行~
下面是修正后的完整代码:
sample = {'A': {'a':22, 'b':24, 'c':80}, 'B': {'a':12, 'b':13, 'c':55}, 'C': {'a':44, 'b':33, 'c':99} } newdict = {} # 修正lambda表达式,先取嵌套字典再拿'c'的值 for key, value in sorted(sample.items(), key=lambda item: item[1]['c'], reverse=True): newdict[key] = value sample = newdict print(sample)
运行这段代码后,就能得到你想要的结果:
{'C': {'a': 44, 'b': 33, 'c': 99}, 'A': {'a': 22, 'b': 24, 'c': 80}, 'B': {'a': 12, 'b': 13, 'c': 55}}
补充个小知识点:如果你的Python版本是3.7及以上,普通字典会保留插入顺序,所以这个方法完全适用;要是用的是更低版本,可以用collections.OrderedDict来确保排序后的顺序,不过现在大部分场景下普通字典就够用啦。
内容的提问来源于stack exchange,提问作者Shion
相关产品推荐
相关产品推荐

