在python中利用dict转json按输入顺序输出内容方式
作者:zhw864680355 发布时间:2021-10-26 15:17:23
一般常规的我们保存数据为dict类型时,系统会自动帮我们排序;但有时我们想按照输入顺序的key:value保存到dict中,而不想要改变顺序,则我们可以通过使用collecions,进行排序。
collections是一个python的内建模块。
示例如下:
# -*- coding:utf-8 -*-
#dic = {}
dic = dict()
dic['b'] = 1
dic['a'] = 2
dic['b0'] = 3
dic['a1'] = 4
print("dic is:",dic.items())
import json
jsons = json.dumps(dic)
print("jsons:",jsons)
结果:
('dic is:', [('a', 2), ('a1', 4), ('b', 1), ('b0', 3)])
('jsons:', '{"a": 2, "a1": 4, "b": 1, "b0": 3}')
修改后:
import collections
dic = collections.OrderedDict()
#dic = {}
dic['b'] = 1
dic['a'] = 2
dic['b0'] = 3
dic['a1'] = 4
print("dic is:",dic.items())
import json
jsons = json.dumps(dic)
print("jsons:",jsons)
结果:
('dic is:', [('b', 1), ('a', 2), ('b0', 3), ('a1', 4)])
('jsons:', '{"b": 1, "a": 2, "b0": 3, "a1": 4}')
补充拓展:Python字典转Json并使用多种格式实现
前言:
利用Python数据转换的套路可以遵循:变量定义的位置,字典操作,列表操作,这个三部分的内容可以处理大部分的数据相关需求。
1.下面我们先看这个脚本:
#从字典转换为Json的方法
from distutils.log import warn as printf
from json import dumps
from pprint import pprint
BOOKs = {
'0132269937': {
'title': 'Core Python Programming',
'edition': 2,
'year': 2007,
},
'0132356139': {
'title': 'Python Web Development with Django',
'authors': ['Jeff Forcier', 'Paul Bissex', 'Wesley Chun'],
'year': 2009,
},
'0137143419': {
'title': 'Python Fundamentals',
'year': 2009,
},
}
printf('*** RAW DICT ***')
printf(BOOKs)
printf('\n*** PRETTY_PRINTED DICT ***')
pprint(BOOKs)
printf('\n*** RAW JSON ***')
printf(dumps(BOOKs))
printf('\n*** PRETTY_PRINTED JSON ***')
printf(dumps(BOOKs, indent=4))
输出结果:
"E:\Anaconda3 4.2.0\python.exe" E:/Pycharm/Python-code/dict2json.py
*** RAW DICT ***
{'0132269937': {'edition': 2, 'title': 'Core Python Programming', 'year': 2007},
'0132356139': {'authors': ['Jeff Forcier', 'Paul Bissex', 'Wesley Chun'],
{'0137143419': {'year': 2009, 'title': 'Python Fundamentals'}, '0132356139': {'year': 2009, 'authors': ['Jeff Forcier', 'Paul Bissex', 'Wesley Chun'], 'title': 'Python Web Development with Django'}, '0132269937': {'year': 2007, 'edition': 2, 'title': 'Core Python Programming'}}
'title': 'Python Web Development with Django',
'year': 2009},
*** PRETTY_PRINTED DICT ***
'0137143419': {'title': 'Python Fundamentals', 'year': 2009}}
*** RAW JSON ***
{"0137143419": {"year": 2009, "title": "Python Fundamentals"}, "0132356139": {"year": 2009, "authors": ["Jeff Forcier", "Paul Bissex", "Wesley Chun"], "title": "Python Web Development with Django"}, "0132269937": {"year": 2007, "edition": 2, "title": "Core Python Programming"}}
*** PRETTY_PRINTED JSON ***
{
"0137143419": {
"year": 2009,
"title": "Python Fundamentals"
},
"0132356139": {
"year": 2009,
"authors": [
"Jeff Forcier",
"Paul Bissex",
"Wesley Chun"
],
"title": "Python Web Development with Django"
},
"0132269937": {
"year": 2007,
"edition": 2,
"title": "Core Python Programming"
}
}
Process finished with exit code 0
首先导入所需要的三个函数:1)导入distutils.log.warn()用来应对python2中print语句和python3中print()语句引起的差异;2)json.dumps(),用来返回一个表示python对象的字符串;pprint.pprint(),用来美观地输出python的对象。
BOOKs数据结构是一个python字典,这里没有用列表这样扁平的数据结构,是因为字典可以构建结构化层次的属性(BOOKs表示通过ISBN标识的书籍还具备额外的信息:书名、作者、出版年份)。值得注意的是,在等价的json表示方法中会移除所有额外的逗号。
Python的Json模块序列化与反序列化的过程分别是 encoding和 decoding。encoding-把一个Python对象编码转换成Json字符串;decoding-把Json格式字符串解码转换成Python对象。要使用json模块必须先import json
Json的导入导出
用write/dump是将Json对象输入到一个python_object中,如果python_object是文件,则dump到文件中;如果是对象,则dump到内存中。这是序列化
2.纵向数据转换为横向数据
1.情况:由于目前spark直接生成的json是每行一个对象,类似以下的json数据格式
[
{
"cardno": 100000026235,
"trdate": "2015-12-25",
"otime": "16:13:33",
"dtime": "16:21:10",
"osite": 16,
"dsite": 15,
"tfc": 1
}]
2.需求:转换成Json column arrays 数组格式 [{},{}]如下
{'cardno': [100006734923], 'trdate': ['2015-12-25'], 'dtime': ['17:56:45'], 'dsite': [40], 'osite': [41], 'otime': ['17:50:11'], 'tfc': [1]}
3.Python代码实现:
import sys
import json
with open(r'D:/data.json', 'r') as f:
data = json.load(f)
# test = {
# "cardno": 100006734923,
# "trdate": "2015-12-25",
# "otime": "17:50:11",
# "dtime": "17:56:45",
# "osite": 41,
# "dsite": 40,
# "tfc": 1
# }
result = {"cardno": [], "trdate":[], "otime":[],"dtime":[],"osite":[],"dsite":[],"tfc":[]}
for test in data:
for a in test.keys():
result[a].append(test[a]);
print(result)
切换本地文件路径转换。
来源:https://blog.csdn.net/zhw864680355/article/details/88845105
猜你喜欢
- 本文实例讲述了Python实现简单的列表冒泡排序和反转列表操作。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-
- 一般我们可以使用背景图的方式给图片添加阴影,但对于不固定尺寸的图片如何实现呢?我们可以采取“视觉欺骗 * ”——定义渐变边框来实现运行代码框&
- 一、基础第三方库使用1.基本使用方法"""例"""from urllib imp
- 原来的语句是这样的: select sum(sl0000) from xstfxps2 where dhao00 in ( select d
- 使用tensorflow过程中,训练结束后我们需要用到模型文件。有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练。这时候我
- 有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值。典型的例子就是一个银行账户,因为你每一次都是在不同的时间
- Q1:PEP8是什么?Python之禅(import this)是什么?这题是考察你对编码规范的认识,无论是自己写代码还是在团队中写代码,了
- 一个页面执行一次Sql语句的话,不会影响到性能。如果一个页面要执行很多次Sql语句,而且使用的是同一个数据库连接,那么上面的方法可能会影响到
- pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。pip检测更新命令:pip list –
- pygame介绍Python Pygame 是一款专门为开发和设计 2D 电子游戏而生的软件包,它支 Windows、Linux、Mac O
- 本章我们要制作一个俄罗斯方块游戏。Tetris译注:称呼:方块是由四个小方格组成的俄罗斯方块游戏是世界上最流行的游戏之一。是由一名叫Alex
- 一、前言本文使用的是 kaggle 猫狗大战的数据集:https://www.kaggle.com/c/dogs-vs-cats/data训
- python代码换行就是每行后面加个 \举个栗子:time = "2017"print "one"
- python 利用pywifi模块实现连接网络破解wifi密码实时监控网络,具体内容如下:import pywififrom pywifi
- asp ajax json教程首先用ACCESS建json.mdb的库,然后建一个表t_jsontable,字段如下:jt_id,jt_na
- sort 包源码解读前言我们的代码业务中很多地方需要我们自己进行排序操作,go 标准库中是提供了 sort 包是实现排序功能的,这里来看下生
- 1、图片防盗链在一些大型网站中,比如百度贴吧,该站点的图片采用了防盗链的规则,以至于使用下面代码会发生错误。简单代码:<!DOCTYP
- 0 引言上周被一则新闻震惊到了,《2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 》,在2019年5月2日开奖的双色球中,广东中
- 1. 池的概念主线程:相当于生产者,只管向线程池提交任务。 并不关心线程池是如何执行任务的。线程池:相当于消费者,负责接收任务,并将任务分配
- 完成这个小球的完全弹性碰撞游戏灵感来自于:下面是我花了一周下班时间所编写的一个小球完全弹性碰撞游戏:游戏初始化状态:最下面的游标和修改小球的