是否有一种方法可以一次对python字典的所有键,子键,子-子键等进行排序?
假设我有字典
dict_1 = {
"key9":"value9",
"key5":"value5",
"key3":{
"key3_1":"value3_1",
"key3_3":"value3_3",
}
"key4":"value4",
"key2":"value2",
"key8":{
"key8_1":"value8_1",
"key8_5":[
"value8_5_3",
"value8_5_1",
]
"key8_2":"value8_2",
}
"key4":"value4",
"key1":"value1",
}
我想把它排序为
dict_1 = {
"key1":"value1",
"key2":"value2",
"key3":{
"key3_1":"value3_1",
"key3_3":"value3_3",
}
"key4":"value4",
"key5":"value5",
"key8":{
"key8_1":"value8_1",
"key8_2":"value8_2",
"key8_5":[
"value8_5_1",
"value8_5_3",
]
}
"key9":"value9",
}
有办法吗?
请注意:
我的
dict_1
可能有几个级别的子键(嵌套)字典)或子值(嵌套列表)。我正在使用Python 2.7.17,我无法更新它。但秩序并非如此保留在3.7之前版本的Python字典中,所以我打赌排序必须使用OrderedDict来完成。
首先,重要的是要知道字典是无序的。所以,如果你想订购一个字典,你需要使用collections.OrderedDict
(自Python2.7
以来就存在)。
然后,这是递归函数的用例:
from collections import OrderedDict
def order_dict(d):
ordered_dict = OrderedDict()
for key in sorted(d.keys()):
val = d[key]
if isinstance(val, dict):
val = order_dict(val)
ordered_dict[key] = val
return ordered_dict