python - 在 Python 中具有特定顺序的 OrderedDict

标签 python json dictionary

我有一本要发送给 API 的字典,不幸的是,API 要求字典按非常特定的顺序排列。我正在从文件加载字典。

现在 json.load(fh, object_pairs_hook=OrderedDict) 完全按照预期的方式对顶级键进行排序,但我需要字典以不同的方式排序。

具体顺序:

{
  "kind": "string",
  "apiVersion": "string",
  "metadata": {...},
  "spec": {
    "subKey": "string"
  }
}

如何使用从文件加载的字典指定顶级和次级键的字典顺序?

最佳答案

在 Python 中,OrderedDict 中的项目顺序与它们写入其中的顺序相同。

因此,如果您想在创建 OrderedDict 时控制项目的顺序,您可以按照您想要的顺序编写它们。对于现有的OrderedDict,您可以按顺序读出、删除和写回每一项。

在你的例子中,如果你需要调整项目的顺序,你可以这样做:

orders = ("kind", "apiVersion", "metadata", "spec")
for key in orders:
    v = object_pairs_hook[key]
    del object_pairs_hook[key]
    object_pairs_hook[key] = v

关于python - 在 Python 中具有特定顺序的 OrderedDict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33398817/

相关文章:

python - 为什么python同时使用 ""和 ' '来制作字符串文字

python - 无法连接到 Kubernetes 上的 PyMongo DB

python - Pandas .groupby 自动选择列

java - Xpath 验证wiremock 匹配XPath 表达式

arrays - Swift:从 View 层次结构创建平面 View 数组

java - 如何存储和搜索 'Banned Passwords'列表

python - 字典不给变量赋值

Python:在将每一行与矩阵中的每一行进行比较后存储非零唯一行的索引

javascript - 我如何实现 google maps yelp.com 风格?

java - jackson 单独使用字段名称对响应进行排序