Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的嵌套字典排序_Python - Fatal编程技术网

python中的嵌套字典排序

python中的嵌套字典排序,python,Python,我有一本像这样的嵌套字典 { 'A' : { 100 : [ 'apple' , 'mango'] , 98 : [ 'banana', 'grapes'], 101 : [ 'melon', 'peach'] } , 'Bb' : { 16 : [ 'a' , 'm'] , 67 : [ 'b', 's'], 0 : [ 'm', 'p'] } } 我想把字典按数字排列,如98

我有一本像这样的嵌套字典

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

我想把字典按数字排列,如98、100和101的升序

试试下面的方法。首先,迭代字典并创建一个按键排序元素的
OrderedDictionary
,然后使用outter字典创建另一个
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'])]))])

尝试以下方法。首先,迭代字典并创建一个按键排序元素的
OrderedDictionary
,然后使用outter字典创建另一个
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'])]))])

字典不是有序的数据类型,因此无法排序。另外,您认为对嵌套结构排序会产生什么结果?e、 g.
{A:{1:[],3:[]},B:{2:[]}
?因为我真的不知道你希望得到什么样的结果。也许你可以解释一下为什么你要对字典进行排序?您想以排序方式输出它吗?(@BcK:您可以通过将字典转换为
集合.orderedict
)FWIW,现在保留插入顺序。字典不是有序数据类型,因此无法排序。另外,您认为对嵌套结构进行排序会产生什么结果?e、 g.
{A:{1:[],3:[]},B:{2:[]}
?因为我真的不知道你希望得到什么样的结果。也许你可以解释一下为什么你要对字典进行排序?您想以排序方式输出它吗?(@BcK:您可以通过将字典转换为
collections.OrderedDict
)FWIW,现在保留插入顺序。