我有以下Python字典,我试图将其排序为OrderedDict。
fruits = {
"apple": {
"details": {
"color": "green",
"dim": 100
},
"types": {
"Akane": {
"taste": "acceptable",
"sort": 1
},
"McIntosh": {
"taste": "delicious",
"sort": 0
},
"Ambrosia": {
"taste": "ok",
"sort": 1
}
}
},
"pear": {
},
"banana": {
},
}
基本上我想通过" sort"对该子字典中的不同appleTypes进行排序。每个appleType的值。 最后,有序字典理想情况应如下所示:
fruits_sorted = {
"apple": {
"details": {
"color": "green",
"dim": 100
},
"types": {
"Akane": {
"taste": "acceptable",
"sort": 1
},
"Ambrosia": {
"taste": "ok",
"sort": 1
},
"McIntosh": {
"taste": "delicious",
"sort": 0
}
}
},
"pear": {
},
"banana": {
},
}
我一直在玩排序函数,但我无法正确理解,我不确定如何在嵌套结构中实现排序。
fruits_sorted = OrderedDict(sorted(fruits.items(), key=lambda x: x[1]))
非常感谢任何帮助!
答案 0 :(得分:1)
你的解决方案非常接近;你需要:
from collections import OrderedDict
apple_types = fruits['apple']['types']
types_sorted = OrderedDict(sorted(apple_types.items(), key=lambda x: -x[1]['sort']))
现在,types_sorted
按照您想要的排序顺序包含苹果类型。如果您愿意,可以将其放回原始字典中。
这会回答你的问题吗?