在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字符串替换示例
Apr 24 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
pip命令无法使用的解决方法
Jun 12 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
python清除函数占用的内存方法
Jun 25 Python
python实现图片批量压缩程序
Jul 23 Python
Python3简单实现串口通信的方法
Jun 12 Python
python画蝴蝶曲线图的实例
Nov 21 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
scrapy redis配置文件setting参数详解
Nov 18 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
python 列表推导和生成器表达式的使用
Feb 01 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
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
php curl发送请求实例方法
2019/08/01 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
python实现电子词典
2020/04/23 Python
使用python分析git log日志示例
2014/02/27 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
同学聚会老师邀请函
2014/01/28 职场文书
小学校园活动策划
2014/01/30 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
二年级评语大全
2014/04/23 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
第一军规观后感
2015/06/12 职场文书