【发布时间】:2021-06-30 19:33:33
【问题描述】:
我已经为这个问题奋斗了好几个小时。我有以下简化的字典
dico = {
"posts": {
"k1": {"val": 2},
"k2": {"val": 1},
"k3": {"val": 3},
"k4": {"val": 0},
}
}
我想按第三级“val”键的值在第二级键(k1,k2...)进行排序。 我需要的结果如下:
dico = {
"posts": {
"k4": {"val": 0},
"k2": {"val": 1},
"k1": {"val": 2},
"k3": {"val": 3},
}
}
有没有办法用 sorted 做到这一点?
我无法做到比sorted(dico['posts'], key=lambda x: dico['posts'][x]['val']) 更进一步:
['k4', 'k2', 'k1', 'k3']
提前无限感谢您的帮助!!
【问题讨论】:
-
基本类型
dict未排序,根据定义。如果你想要一个排序的字典,你必须切换到支持顺序的衍生物之一,例如 collections.DefaultDict. -
@Prune Python 3.7 的 dicts 保持它们的插入顺序,我认为它现在已经出现了足够长的时间,所以我们可以假设 OP 正在使用它或更新的版本
-
啊——这周我遇到了太多 2.7 个帖子。好点——是的,dicts 现在保留了它们的顺序。在这种情况下,我想知道 OP 卡在哪里了——排序顺序已正确确定,现在它只是插入。
-
我忘了说,我用的是3.7.3
-
@Prune collections.DefaultDict 不存在。
标签: python sorting dictionary nested