如何按嵌套字典中指定键的值对字典进行正确排序?
按嵌套字典的指定键值降序排序的实现方法
没问题,在Python里要实现这个需求非常简单,用内置的sorted()函数就能轻松搞定,我给你直接上可运行的代码和解释:
完整实现代码
# 定义你的原始字典 mydict = dict() mydict["a"] = {"foo": 0.3, "boo": 0.1} mydict["b"] = {"foo": 0.1, "boo": 0.2} mydict["c"] = {"foo": 0.8, "boo": 0.3} mydict["d"] = {"foo": 0.5, "boo": 0.4} mydict["e"] = {"foo": 0.2, "boo": 0.5} # 按"foo"的值降序排序 sorted_list = sorted(mydict.values(), key=lambda x: x["foo"], reverse=True) # 打印结果验证 print(sorted_list)
代码拆解说明
mydict.values():先提取原始字典里所有的子字典(也就是{"foo": 0.3, "boo": 0.1}这类值),得到一个可迭代的子字典集合。key=lambda x: x["foo"]:用lambda匿名函数指定排序的核心依据——每个子字典x的"foo"键对应的值。reverse=True:把默认的升序排序改成降序,这样就能得到你想要的从大到小排列的结果。
运行这段代码后,输出的结果完全符合你的预期:
[{"foo": 0.8, "boo": 0.3}, {"foo": 0.5, "boo": 0.4}, {"foo": 0.3, "boo": 0.1}, {"foo": 0.2, "boo": 0.5}, {"foo": 0.1, "boo": 0.2}]
如果之后需要按其他键(比如"boo")排序,只需要把lambda里的x["foo"]改成x["boo"]就行,非常灵活。
内容的提问来源于stack exchange,提问作者Zack Lee
相关产品推荐
相关产品推荐

