加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:31:14 所属栏目:Python 来源:网络整理
导读:假设orig是一个包含普通字符串:字符串键值对的OrderedDict,但有时该值可能是另一个嵌套的OrderedDict. 我想按键,按字母顺序(升序)对orig进行排序,并以递归方式进行. 规则: 假设键字符串是不可预测的 假设嵌套可以无限发生,例如级别1-50都具有字符串,Ordere
假设orig是一个包含普通字符串:字符串键值对的OrderedDict,但有时该值可能是另一个嵌套的OrderedDict.

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

规则:

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

需要协助排序算法:

import string
from random import choice


orig = OrderedDict((
    ('a',choice(string.digits)),('b',('c',('special',OrderedDict((
        ('a',)))
))

sorted_copy = OrderedDict(sorted(orig.iteritems(),...))

self.assertEqual(orig,sorted_copy)

解决方法

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

就像是:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读