python3 json dumps顺序_如何在python3中保持JSON键顺序不变json.dumps?

我注意到python3的json.dumps实现中有一些奇怪的行为,即每次将同一个对象从一个执行转储到另一个执行时,键顺序都会发生变化。google没用,因为我不在乎把钥匙分类,我只想让它们保持原样!下面是一个示例脚本:import json

data = {

'number': 42,

'name': 'John Doe',

'email': 'john.doe@example.com',

'balance': 235.03,

'isadmin': False,

'groceries': [

'apples',

'bananas',

'pears',

],

'nested': {

'complex': True,

'value': 2153.23412

}

}

print(json.dumps(data, indent=2))

运行此脚本时,每次都会得到不同的输出,例如:

^{pr2}$

但当我再次运行它时,我得到:$ python print_data.py

{

"email": "john.doe@example.com",

"balance": 235.03,

"name": "John Doe",

"nested": {

"value": 2153.23412,

"complex": true

},

"isadmin": false,

"groceries": [

"apples",

"bananas",

"pears"

],

"number": 42

}

我知道字典是无序的集合,其顺序是基于散列函数的;但是在Python2中,顺序(不管是什么)是固定的,不会因每次执行而改变。这里的困难在于它使我的测试难以运行,因为我需要比较两个不同模块的JSON输出!在

知道发生什么事了吗?如何修复?注意,我不想使用OrderedDict或执行任何排序,重要的是字符串表示在执行之间保持不变。同样,这只是为了测试目的,对我的模块的实现没有任何影响。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值