在python中利用dict转json按输入顺序输出内容方式
一般常规的我们保存数据为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("dicis:",dic.items()) importjson jsons=json.dumps(dic) print("jsons:",jsons) 结果: ('dicis:',[('a',2),('a1',4),('b',1),('b0',3)]) ('jsons:','{"a":2,"a1":4,"b":1,"b0":3}') 修改后: importcollections dic=collections.OrderedDict() #dic={} dic['b']=1 dic['a']=2 dic['b0']=3 dic['a1']=4 print("dicis:",dic.items()) importjson jsons=json.dumps(dic) print("jsons:",jsons) 结果: ('dicis:',[('b',1),('a',2),('b0',3),('a1',4)]) ('jsons:','{"b":1,"a":2,"b0":3,"a1":4}')
补充拓展:Python字典转Json并使用多种格式实现
前言:
利用Python数据转换的套路可以遵循:变量定义的位置,字典操作,列表操作,这个三部分的内容可以处理大部分的数据相关需求。
1.下面我们先看这个脚本:
#从字典转换为Json的方法 fromdistutils.logimportwarnasprintf fromjsonimportdumps frompprintimportpprint BOOKs={ '0132269937':{ 'title':'CorePythonProgramming', 'edition':2, 'year':2007, }, '0132356139':{ 'title':'PythonWebDevelopmentwithDjango', 'authors':['JeffForcier','PaulBissex','WesleyChun'], 'year':2009, }, '0137143419':{ 'title':'PythonFundamentals', 'year':2009, }, } printf('***RAWDICT***') printf(BOOKs) printf('\n***PRETTY_PRINTEDDICT***') pprint(BOOKs) printf('\n***RAWJSON***') printf(dumps(BOOKs)) printf('\n***PRETTY_PRINTEDJSON***') printf(dumps(BOOKs,indent=4))
输出结果:
"E:\Anaconda34.2.0\python.exe"E:/Pycharm/Python-code/dict2json.py ***RAWDICT*** {'0132269937':{'edition':2,'title':'CorePythonProgramming','year':2007}, '0132356139':{'authors':['JeffForcier','PaulBissex','WesleyChun'], {'0137143419':{'year':2009,'title':'PythonFundamentals'},'0132356139':{'year':2009,'authors':['JeffForcier','PaulBissex','WesleyChun'],'title':'PythonWebDevelopmentwithDjango'},'0132269937':{'year':2007,'edition':2,'title':'CorePythonProgramming'}} 'title':'PythonWebDevelopmentwithDjango', 'year':2009}, ***PRETTY_PRINTEDDICT*** '0137143419':{'title':'PythonFundamentals','year':2009}} ***RAWJSON*** {"0137143419":{"year":2009,"title":"PythonFundamentals"},"0132356139":{"year":2009,"authors":["JeffForcier","PaulBissex","WesleyChun"],"title":"PythonWebDevelopmentwithDjango"},"0132269937":{"year":2007,"edition":2,"title":"CorePythonProgramming"}} ***PRETTY_PRINTEDJSON*** { "0137143419":{ "year":2009, "title":"PythonFundamentals" }, "0132356139":{ "year":2009, "authors":[ "JeffForcier", "PaulBissex", "WesleyChun" ], "title":"PythonWebDevelopmentwithDjango" }, "0132269937":{ "year":2007, "edition":2, "title":"CorePythonProgramming" } } Processfinishedwithexitcode0
首先导入所需要的三个函数: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模块必须先importjson
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.需求:转换成Jsoncolumnarrays数组格式[{},{}]如下
{'cardno':[100006734923],'trdate':['2015-12-25'],'dtime':['17:56:45'],'dsite':[40],'osite':[41],'otime':['17:50:11'],'tfc':[1]}
3.Python代码实现:
importsys importjson withopen(r'D:/data.json','r')asf: 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":[]} fortestindata: foraintest.keys(): result[a].append(test[a]); print(result)
切换本地文件路径转换。
以上这篇在python中利用dict转json按输入顺序输出内容方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。