在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连接池实现示例程序
Nov 26 Python
python读取html中指定元素生成excle文件示例
Apr 03 Python
Python smallseg分词用法实例分析
May 28 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
python如何查看微信消息撤回
Nov 27 Python
Python 从相对路径下import的方法
Dec 04 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
python标准库os库的函数介绍
Feb 12 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP下对字符串的递增运算代码
2010/08/21 PHP
php的dl函数用法实例
2014/11/06 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
PDO::errorCode讲解
2019/01/28 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python+opencv实现阈值分割
2018/12/26 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python面向对象之Web静态服务器
2019/09/03 Python
python数值基础知识浅析
2019/11/19 Python
python django中8000端口被占用的解决
2019/12/17 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
英国著名药妆店:Superdrug
2021/02/13 全球购物
金融专业应届生求职信
2013/11/02 职场文书
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
党员承诺践诺书
2014/05/20 职场文书
高三霸气励志标语
2014/06/24 职场文书
综治工作汇报材料
2014/10/27 职场文书
北京故宫导游词
2015/01/31 职场文书
javascript Number 与 Math对象的介绍
2021/11/17 Javascript
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python