在python中对嵌套字典进行排序

时间:2018-07-18 05:23:59

标签: python

我有一个类似

的嵌套字典
{  'A' : { 100 : [ 'apple' , 'mango'] , 
            98 : [ 'banana', 'grapes'], 
           101 : [ 'melon', 'peach'] }  , 
  'Bb' : {  16 : [ 'a' , 'm'] , 
            67 : [ 'b', 's'], 
             0 : [ 'm', 'p'] } }

我希望字典按照数字排列,例如按升序排列98、100和101。

1 个答案:

答案 0 :(得分:3)

尝试以下方法。首先,迭代您的字典并创建一个OrderedDict,按键对元素进行排序,然后使用您的外部字典创建另一个OrderedDictionary

d = { 'A' : { 100 : [ 'apple' , 'mango'] , 98: [ 'banana', 'grapes'], 101: ['melon', 'peach'] }  , 'Bb' :  { 16 : [ 'a' , 'm'] , 67: [ 'b', 's'], 0: ['m', 'p'] }  }
for key, value in d.items():
    d[key] = OrderedDict(sorted(value.items()))
d = OrderedDict(sorted(d.items()))

输出:

print(d)
OrderedDict([('A',
              OrderedDict([(98, ['banana', 'grapes']),
                           (100, ['apple', 'mango']),
                           (101, ['melon', 'peach'])])),
             ('Bb',
              OrderedDict([(0, ['m', 'p']),
                           (16, ['a', 'm']),
                           (67, ['b', 's'])]))])