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,现在保留插入顺序。