如何在python中定义有序字典

0x00 前言

最近遇到一个大坑,在测一个程序的时候。程序接受的数据是json,但是要求json是有序的(吐槽一样,要求有序的用json干屁啊!)

当我用python构造字典的时候,总会给我排序,用json.dumps转化为json后。导致程序解析失败。所以,在此研究了一下如何构造有序的json。

0x01 解决

网上查了一下,用到了python中有序字典OrderdDict,在collections库中。

在默认情况下:

>>> d= {}
>>> d["2"]=2
>>> d["1"]=1
>>> d["3"]=3
>>> d
{'1': 1, '3': 3, '2': 2}
>>> json.dumps(d)
'{"1": 1, "3": 3, "2": 2}'

使用OrderedDict后:

>>> import collections
>>> d = collections.OrderedDict()
>>> d["2"]=2
>>> d["1"]=1
>>> d["3"]=3
>>> d
OrderedDict([('2', 2), ('1', 1), ('3', 3)])
>>> import json
>>> json.dumps(d)
'{"2": 2, "1": 1, "3": 3}'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏walterlv - 吕毅的博客

使用 ExceptionDispatchInfo 捕捉并重新抛出异常

发布于 2017-10-23 14:22 更新于 2017-10...

10610
来自专栏代码世界

计算机基础,Python基础--变量以及简单的循环

一、计算机基础 1.CPU   相当于人体的大脑,用于计算处理数据。 2.内存    用于存储数据,CPU从内存调用数据处理计算,运算速度很快。 PS:问:...

28870
来自专栏LanceToBigData

OOAD-设计模式(三)之创建型设计模式(5种)

前言   前面介绍了OOAD的基础知识,现在我们来详细的说明一下GOF设计模式中的23种模式,希望大家能够学到东西! 一、工厂方法模式(Factory Meth...

28250
来自专栏腾讯Bugly的专栏

如何定位Obj-C野指针随机Crash(三):如何让Crash自报家门

本文主要介绍如何利用OC Runtime的特性,让OC野指针对象主动抛出自己的信息,秒杀某些全系统栈Crash。 ? 陈其锋,腾讯SNG即通产品部音视频技术中心...

96140
来自专栏互扯程序

设计模式不止23种!

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

14040
来自专栏互联网高可用架构

白话阿里巴巴Java开发手册(编程规约)

38830
来自专栏听雨堂

【4】通过简化的正则表达式处理字符串

阅读目录 常见字符串操作 使用正则表达式处理字符串 “前后限定”查找目标 自动处理转义字符 界定串的通用化 多个目标的匹配 进一步扩展 结论 在...

25960
来自专栏从流域到海域

《Java程序设计基础》 第4章手记

《Java程序设计基础》 第4章手记 本章主要内容 - 语句和复合语句 - 分支结构 - 循环结构 - 跳转语句 这四部...

21080
来自专栏大内老A

WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常。在服务执行过程中,我们手工抛出FaultExcept...

253100
来自专栏闰土大叔

闰土说JS进阶之作用域链

前言 在前端应聘中,相信会有不少面试官都会问你,说说你理解的js作用域,或者作用域链。显然,这是一道经典的js面试题,对于老司机而言可谓是小菜一碟,而对于前端...

34590

扫码关注云+社区

领取腾讯云代金券