python – 递归地按键对嵌套的OrderedDict进行排序

前端之家收集整理的这篇文章主要介绍了python – 递归地按键对嵌套的OrderedDict进行排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设orig是一个包含普通字符串:字符串键值对的OrderedDict,但有时该值可能是另一个嵌套的OrderedDict.

我想按键,按字母顺序(升序)对orig进行排序,并以递归方式进行.

规则:

>假设键字符串是不可预测的
>假设嵌套可以无限发生,例如级别1-50都具有字符串,OrderedDicts等作为值.

需要协助排序算法:

  1. import string
  2. from random import choice
  3.  
  4.  
  5. orig = OrderedDict((
  6. ('a',choice(string.digits)),('b',('c',('special',OrderedDict((
  7. ('a',)))
  8. ))
  9.  
  10. sorted_copy = OrderedDict(sorted(orig.iteritems(),...))
  11.  
  12. self.assertEqual(orig,sorted_copy)

解决方法

编辑:对于python 3.6,@ pelson的答案更好

就像是:

  1. def sortOD(od):
  2. res = OrderedDict()
  3. for k,v in sorted(od.items()):
  4. if isinstance(v,dict):
  5. res[k] = sortOD(v)
  6. else:
  7. res[k] = v
  8. return res

猜你在找的Python相关文章