Python 在嵌套字典中保持输入顺序

Python 在嵌套字典中保持输入顺序,python,dictionary,nested,Python,Dictionary,Nested,如何保持嵌套字典的输入顺序?具体来说:我使用另一个字典使其成为有序dict(名为'outdict')的嵌套字典,然后添加新键 示例数据: example1 = {'x': '28', 'y': 9,'z': '1999'} example2 = {'x': '12', 'y': 15,'z': '2000'} test1 = "abc" test2 = "def" 我想要的“outdict”形式是 {'one': {'x': '28', 'y': 9,'z': '1999', 'alpha':

如何保持嵌套字典的输入顺序?具体来说:我使用另一个字典使其成为有序dict(名为'outdict')的嵌套字典,然后添加新键

示例数据:

example1 = {'x': '28', 'y': 9,'z': '1999'}
example2 = {'x': '12', 'y': 15,'z': '2000'}
test1 = "abc"
test2 = "def"
我想要的“outdict”形式是

{'one': {'x': '28', 'y': 9,'z': '1999', 'alpha': 'abc'},
 'two': {'x': '12', 'y': 15,'z': '2000', 'alpha': 'def'}}
我尝试了两件事:

1. (来自) 结果:未排序

2.
结果:未排序

您不能只获取一个常规的dict并将其包装在OrderedDict()中。这不会恢复值的顺序。您需要从一开始就使用有序的dict。例如:

原来我们有

>>> example1 = {'x':'28','y':'9','z':'1999'}
>>> example1
{'y': '9', 'x': '28', 'z': '1999'}
现在是OrderedDict()


将常规无序dict的内容放入有序dict不会神奇地恢复无序dict中值的顺序

不过,您可以做一些事情:

  • 也将
    example1
    创建为
    OrderedDict
    ,以便对其值进行排序;但是,将项目作为列表传递,而不是作为dict传递,否则它们将在已排序dict中的“到达”之前再次无序

    example1 = OrderedDict([('x', '28'), ('y', 9), ('z', '1999')])
    
  • 如果希望值按字母顺序排列,而不一定是按添加顺序排列,则可以对项目进行排序,然后从中创建一个新的
    OrderedDict

    example1 = OrderedDict(sorted(example1.items()))
    
  • 。。。或者跳过这一步,直接用已排序的项目更新外部dict

    outdict["one"].update(sorted(example1.items()))
    
  • example1 = OrderedDict([('x', '28'), ('y', 9), ('z', '1999')])
    
    example1 = OrderedDict(sorted(example1.items()))
    
    outdict["one"].update(sorted(example1.items()))