按键对嵌套的OrderedDict进行递归排序 [英] Sorting a nested OrderedDict by key, recursively
本文介绍了按键对嵌套的OrderedDict进行递归排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
说orig
是一个OrderedDict
,其中包含普通的string:string键值对,但有时该值可能是另一个嵌套的OrderedDict
.
Say orig
is an OrderedDict
which contains normal string:string key value pairs, but sometimes the value could be another, nested OrderedDict
.
我想按字母顺序(升序)按键对orig
进行排序,然后递归地进行.
I want to sort orig
by key, alphabetically (ascending), and do it recursively.
规则:
- 假设键字符串是不可预测的
- 假设嵌套可以无限进行,例如1-50级都具有字符串,OrderedDicts等作为值.
需要有关sorted
算法的帮助:
import string
from random import choice
orig = OrderedDict((
('a', choice(string.digits)),
('b', choice(string.digits)),
('c', choice(string.digits)),
('special', OrderedDict((
('a', choice(string.digits)),
('b', choice(string.digits)),
('c', choice(string.digits)),
)))
))
sorted_copy = OrderedDict(sorted(orig.iteritems(), ...))
self.assertEqual(orig, sorted_copy)
推荐答案
对于python 3.6 +,@ pelson的答案更好
for python 3.6+, @pelson's answer is better
类似:
def sortOD(od):
res = OrderedDict()
for k, v in sorted(od.items()):
if isinstance(v, dict):
res[k] = sortOD(v)
else:
res[k] = v
return res
这篇关于按键对嵌套的OrderedDict进行递归排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文