使用“json.dumps”时 JSON 对象中的项目乱序?

2024-03-22

我在用着json.dumps转换成json就像

countries.append({"id":row.id,"name":row.name,"timezone":row.timezone})
print json.dumps(countries)

我得到的结果是:

[
   {"timezone": 4, "id": 1, "name": "Mauritius"}, 
   {"timezone": 2, "id": 2, "name": "France"}, 
   {"timezone": 1, "id": 3, "name": "England"}, 
   {"timezone": -4, "id": 4, "name": "USA"}
]

我想要按以下顺序排列键:id、名称、时区 - 但我有时区、id、名称。

我应该如何解决这个问题?


两者都是Pythondict(Python 3.7之前)和JSON对象是无序集合。你可以通过sort_keys参数,对键进行排序:

>>> import json
>>> json.dumps({'a': 1, 'b': 2})
'{"b": 2, "a": 1}'
>>> json.dumps({'a': 1, 'b': 2}, sort_keys=True)
'{"a": 1, "b": 2}'

如果您需要特定订单;你可以use collections.OrderedDict https://docs.python.org/library/collections.html#collections.OrderedDict:

>>> from collections import OrderedDict
>>> json.dumps(OrderedDict([("a", 1), ("b", 2)]))
'{"a": 1, "b": 2}'
>>> json.dumps(OrderedDict([("b", 2), ("a", 1)]))
'{"b": 2, "a": 1}'

从Python 3.6开始 https://docs.python.org/3.6/whatsnew/3.6.html#pep-468-preserving-keyword-argument-order,关键字参数顺序被保留,并且可以使用更好的语法重写上面的内容:

>>> json.dumps(OrderedDict(a=1, b=2))
'{"a": 1, "b": 2}'
>>> json.dumps(OrderedDict(b=2, a=1))
'{"b": 2, "a": 1}'

See PEP 468 – 保留关键字参数顺序 https://www.python.org/dev/peps/pep-0468/.

如果您的输入以 JSON 形式给出,那么要保留顺序(以获取OrderedDict),你可以通过object_pair_hook, 正如@Fred Yankowski 所建议的 https://stackoverflow.com/questions/10844064/items-in-json-object-are-out-of-order-using-json-dumps/23820416#comment62431021_23820416:

>>> json.loads('{"a": 1, "b": 2}', object_pairs_hook=OrderedDict)
OrderedDict([('a', 1), ('b', 2)])
>>> json.loads('{"b": 2, "a": 1}', object_pairs_hook=OrderedDict)
OrderedDict([('b', 2), ('a', 1)])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“json.dumps”时 JSON 对象中的项目乱序? 的相关文章

  • 扭曲多种协议

    我希望为我正在从事的项目学习扭曲 该项目需要服务器响应 HTTP 请求以及通过 TCP 连接的其他协议 Twisted能够同时处理多种协议吗 我想使用 Twisted Web 来帮助处理 HTTP 但同时需要响应其他端口上的 TCP 连接
  • 让 Django 提供可下载文件

    我希望网站上的用户能够下载路径被遮挡的文件 因此无法直接下载它们 例如 我希望 URL 是这样的 http example com download f somefile txt 在服务器上 我知道所有可下载的文件都位于该文件夹中 home
  • 如何从 Windows 7 PC 上完全卸载 Python 2.7

    从这里安装了Python 2 7 https www python org downloads release python 279 https www python org downloads release python 279 然后我
  • 来自多元 t 分布的样本 python

    我想知道Python中是否有一个从多元学生t分布中采样的函数 我有包含 14 个元素的均值向量 14x14 协方差矩阵和自由度 我想从这个 t 分布中采样一个向量 对于一维情况 我使用 stats t rvs df loc scale 并且
  • 为什么 pandas.DataFrame.update 会更改更新后的数据帧的数据类型?

    出于显而易见的原因 我想在更新后将列的数据类型保留为 int 有什么想法为什么这不能按预期工作吗 import pandas as pd df1 pd DataFrame a 1 b 2 c foo a 3 b 4 c baz df2 pd
  • 在 Python 中倾斜数组

    我有一个 2D 数组 我将使用它保存为灰度图像scipy misc toimage 在此之前 我想将图像倾斜给定角度 像这样进行插值scipy ndimage interpolation rotate 上图只是为了说明倾斜过程 我知道我必须
  • PyQt5 的 OpenGL 模块和版本控制问题(调用不正确的 _QOpenGLFunctions_(ver))

    我一直在努力得到PyQt5 helloGL 示例代码 https github com baoboa pyqt5 blob master examples opengl hellogl py编译 当我尝试构建解决方案时 我得到 Traceb
  • 统计Sweep算子的Python实现

    我正在学习一些用书中缺失的数据进行统计的技术 缺失数据的统计分析作者 利特尔和鲁宾 对于处理单调无响应数据来说 一个特别有用的函数是扫频操作员 详情见第 148 151 页 我知道 R 模块gmm有swp函数可以做到这一点 但我想知道是否有
  • pandas groupby 并转换为 json 列表

    我有一个如下所示的 pandas 数据框 idx f1 f2 f3 1 a a b 2 b a c 3 a b c 87 e e e 我需要将其他列转换为基于索引列的字典列表 所以 最终结果应该是 idx features 1 f1 a f
  • Python3 - 如何将字符串转换为十六进制

    我正在尝试将字符串逐个字符转换为十六进制 但我无法在Python3中弄清楚它 在较旧的 python 版本中 我的以下内容有效 test This is a test for c in range 0 len test print 0x s
  • 如何在solidpython中设置特殊变量$fa、$fs、$fn

    in 上一个线程 https stackoverflow com questions 54040390 how to save data in stl file after python solid processing显示了如何通过 So
  • 如何在 FastAPI Swagger API 中按方法类型对方法进行排序?

    如何在 FastAPI Swagger 自动文档中设置 API 方法的排序顺序 我希望所有方法按类型分组 GET POST PUT DELETE 这个答案 https stackoverflow com questions 24951268
  • 在python中检测按下了哪些键

    我需要知道现在按下的是哪个键 我不想捕获一些特定的按键来触发事件或类似的事情 我想知道现在按下了哪些键并显示它们的列表 我还需要捕获特殊键 如 F1 F12 shift alt home windows 等 基本上是键盘上的所有键 我如何在
  • 如何在 Python 中连接两个列表?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 如何在 Python 中连接两个列表 Example listone 1 2 3 lis
  • 如何仅在按下某个键时触发鼠标单击?在Python中

    我想制作一个程序 或者当我单击某个键时 鼠标会自动单击 只要我单击该键 如果我不单击该键 它就会停止 我不希望只在触摸按键一次时才发生点击 而是只要按住按键就发生点击 也可以像雷蛇突触鼠标一样按下鼠标左键触发点击 任何想法 EDIT 1 这
  • 如何单独捕获这些异常?

    我正在编写一个与 Quickbooks 交互的 Python 程序 连接到 Quickbooks 时 根据问题的不同 我可能会遇到以下两个常见异常之一 pywintypes com error 2147352567 Exception oc
  • Pandas 数据框可对多列和要列出的值进行字典

    我有一个数据框 id key a1 1 a2 1 a3 1 a4 2 a5 2 a6 3 我想创建一本字典key作为机器号 并且id列作为列表 like 1 a1 a2 a3 2 a4 a5 3 a6 我可以先使用 groupby 然后再使
  • 如何使用多阶段构建减小 python (docker) 图像大小?

    我正在寻找一种使用 python 和 Dockerfile 创建多阶段构建的方法 例如 使用以下图像 第一张图片 安装所有编译时要求 并安装所有需要的 python 模块 第二张图片 将所有已编译 构建的包从第一个映像复制到第二个映像 而不
  • 收到 Python 错误“来自:无法读取 /var/mail/Bio”

    我正在运行一个 bio python 脚本 这会导致以下错误 from can t read var mail Bio 由于我的脚本与邮件没有任何关系 我不明白为什么我的脚本在 var mail 中查找 这里似乎有什么问题 我怀疑这会有帮助
  • 我可以以某种方式“编译”一个Python脚本以在没有安装Python的PC上运行吗?

    所以我有一个Python脚本 myscript py 我是这样执行的 python D myscript py 但是 我必须安装 Python 并将其包含在PATH使其工作的环境变量 是否有可能以某种方式将 Python 可执行文件与 Py

随机推荐

  • 通过引用使用临时对象和参数的规则

    说我有一堂课 class A public A 和一个函数 void x const A s 我这样做 x A 有人可以向我解释有关通过引用传递临时对象的规则吗 就编译器允许的内容而言 在哪里需要 const 是否发生隐式复制等等 从尝试来
  • Rcurl 与 http 数据发布

    我想将以下curl调用移至Rcurl curl http myserver org stream H Authorization Basic XXXXXXXX H Connection keep alive data binary limi
  • 如何使用 Java 实例化 ArrayList 并通过反射添加项目?

    我正在编写一个将 xml 转换为 Java 对象的反序列化方法 我想动态地执行此操作 并避免编写对特定类型的硬编码引用 例如 这是我的一门课程的简化版本 public class MyObject public ArrayList
  • 优秀 Java 桌面应用程序的示例 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • EditText 与下面的建议列表

    我想在我的应用程序中实现 Google instant 之类的列表 顶部有一个 editText 下面有一个列表 每次用户输入新字符时都会更新该列表 你能指出我正确的方向吗 是否有任何小部件或任何我可以使用的东西 或者我是否必须删除列表并在
  • Firebase实时数据库单值侦听器多次触发

    我正在尝试从其他值侦听器中的数据库接收数据 类 MyFragment Fragment private lateinit var reference DatabaseReference override fun onCreate saved
  • 我如何知道哪些处理程序在 Promise 中抛出错误?

    假设我有如下承诺 p then Task1 then Task2 then Task3 catch errorHandler When Task2遇到错误 我怎么知道错误来自Task2 in catch 每个人 我自己研究了演示代码 希望大
  • 使用 Microsoft IIS 创建下载链接

    我想使用 Microsoft IIS 设置直接下载链接 我们已经有一个使用 IP 地址的网页 该地址指向我们服务器上的 web 文件夹 但我想在我的服务器上创建一个单独的位置 我可以在其中放置可下载的文件 以便客户端只需键入链接即可获取下载
  • 为什么在 std::vector 的初始化列表中调用复制构造函数?

    我有以下非常简单的课程 class Foo public Foo Foo const Foo delete Foo Foo void operator const Foo delete void operator Foo void dump
  • AnimationCurve.Evaluate - 按值获取时间

    有没有一种内置方法如何从 Unity3d 中的动画曲线中获取时间值 与Evaluate相反的方式 我需要实现这一目标 而不是从时间中获取价值 float time AnimationCurve Evaluate float value 一般
  • R update() 交互项未删除

    问题 我打算用交互项拟合线性模型 在估计 完整 模型后 我想删除不重要的交互项 但是 在我的模型上使用函数 update lm interaction 后 没有任何反应 请帮忙 Data library car data Prestige
  • 使用 OpenCV 输出作为网络摄像头 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 所以 我想编写一个程序 使 OpenCV 处理后的输出被视为网络摄像头 我想用它为 Skype 等程序创
  • 重命名导入的静态函数有什么问题?

    考虑以下 Scala 代码 object MainObject def main args Array String import Integer parseInt gt atoi println atoi 5 2 println args
  • 如何在流式传输之前知道音频歌曲的持续时间?

    我正在制作一个流音频歌曲的应用程序 在自定义媒体播放器中 我必须显示该音频文件的总持续时间 如果一首音频歌曲是 SDCard 我可以使用以下方法知道它的持续时间 MediaPlayer player public double durati
  • MySQL - 如何插入具有多对多关系的表

    我有一桌人 每个人都拥有一项财产 并且许多人可能拥有某种财产 所以这是一个多对多的关系 这是架构 CREATE TABLE persons person id int 11 NOT NULL AUTO INCREMENT firstname
  • 有没有办法告诉 html 元素忽略任何样式表?

    我正在尝试向已经具有全局 选择 样式的页面添加下拉菜单 有没有办法告诉新的选择列表忽略全局样式 大约有 1 到 2 个使用全局样式的现有下拉菜单 所以我不想重构现有的 html 假设您可以在该元素上设置唯一的类或 id 您可以使用 有限的浏
  • R 3.5 中的 data.table 包未安装

    我目前正在使用 R 3 5 测试版 我的项目中需要 data table 包 但我的包未安装 任何人都可以帮我解决这个问题吗 当我安装它时 它向我显示以下错误 install packages 数据 表 将软件包安装到 C Users hp
  • Windows Mobile 同步错误

    我是 Windows Mobile 开发新手 一直在研究在 PDA 运行的 WM6 和 SQL Server 2005 数据库之间同步数据的方法 经过一番研究后 我决定使用 Windows 同步服务 我首先查看示例 SyncServices
  • 检查一个名字是否看起来“人类”?

    我有一款在线角色扮演游戏 我正在认真对待 最近 我遇到了用户使用虚假名称 只是一堆不同字母 制作虚假字符的问题 就像 Ghytjrhfsdjfnsdms Yiiiedawdmnwe Hhhhhhhhhhejejekk 我强迫他们改名 但这已
  • 使用“json.dumps”时 JSON 对象中的项目乱序?

    我在用着json dumps转换成json就像 countries append id row id name row name timezone row timezone print json dumps countries 我得到的结果