gpt4 book ai didi

python - 保持嵌套字典中的输入顺序

转载 作者:行者123 更新时间:2023-12-01 04:42:04 25 4
gpt4 key购买 nike

如何保留嵌套字典的输入顺序?具体来说:我使用另一个字典使其成为有序字典(名为“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.

from collections import OrderedDict

class MyDict(OrderedDict):
def __missing__(self, key):
val = self[key] = MyDict()
return val

outdict = MyDict()
outdict["one"].update(OrderedDict(example1))
outdict["one"]["alpha"] = test1
outdict["two"].update(OrderedDict(example2))
outdict["two"]["alpha"] = test2

(来自https://stackoverflow.com/questions/18809482#18809656)结果:未排序

2.

outdict = OrderedDict()
outdict["one"] = OrderedDict()
outdict["two"] = OrderedDict()
outdict["one"].update(OrderedDict(example1))
outdict["one"]["alpha"] = test1
outdict["two"].update(OrderedDict(example2))
outdict["two"]["alpha"] = test2

结果:未排序

最佳答案

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

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

  1. 也将 example1 创建为 OrderedDict,因此它的值是有序的;但将项目作为列表而不是字典传递,否则它们将在有序字典中的“到达”之前再次无序

    example1 = OrderedDict([('x', '28'), ('y', 9), ('z', '1999')])
  2. 如果您希望值按字母顺序排序,而不一定按照它们添加的顺序排序,您只需对项目进行排序并从中创建一个新的 OrderedDict...

    example1 = OrderedDict(sorted(example1.items()))
  3. ...或者跳过该步骤并直接使用排序后的项目更新外部字典

    outdict["one"].update(sorted(example1.items()))

关于python - 保持嵌套字典中的输入顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30412746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com