在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 Web开发模板引擎优缺点总结
May 06 Python
python实现查询苹果手机维修进度
Mar 16 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
python实现贪吃蛇游戏源码
Mar 21 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
带你学习Python如何实现回归树模型
Jul 16 Python
ASP.NET Core中的配置详解
Feb 05 Python
Matplotlib绘制混淆矩阵的实现
May 27 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的4种常见运行方式
2015/03/20 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
python利用正则表达式提取字符串
2016/12/08 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Python简易版停车管理系统
2019/08/12 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
一份创业计划书范文
2014/02/08 职场文书
美术教师岗位职责
2014/03/18 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
个人向公司借款协议书
2014/10/09 职场文书
邀请书模板
2015/02/02 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript