在python中利用dict转json按输入顺序输出内容方式


Posted in Python onFebruary 27, 2020

一般常规的我们保存数据为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)

切换本地文件路径转换。

以上这篇在python中利用dict转json按输入顺序输出内容方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python逐行读写txt文件的实例讲解
Apr 03 Python
pip安装时ReadTimeoutError的解决方法
Jun 12 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
Python中的延迟绑定原理详解
Oct 11 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
python生成大写32位uuid代码
Mar 03 Python
Python-for循环的内部机制
Jun 12 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
Python截图并保存的具体实例
Jan 14 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
python中pymysql包操作数据库方法
Apr 19 Python
pytorch之Resize()函数具体使用详解
Feb 27 #Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 #Python
简单了解Python write writelines区别
Feb 27 #Python
python json load json 数据后出现乱序的解决方案
Feb 27 #Python
Python3标准库之functools管理函数的工具详解
Feb 27 #Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 #Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 #Python
You might like
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
php中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
通信专业个人自我鉴定
2013/10/21 职场文书
市政施工员自我鉴定
2014/01/15 职场文书
家装业务员岗位职责
2015/04/03 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
新闻通讯稿范文
2015/07/22 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript