在python中利用dict轉(zhuǎn)json按輸入順序輸出內(nèi)容方式
一般常規(guī)的我們保存數(shù)據(jù)為dict類型時(shí),系統(tǒng)會(huì)自動(dòng)幫我們排序;但有時(shí)我們想按照輸入順序的key:value保存到dict中,而不想要改變順序,則我們可以通過(guò)使用collecions,進(jìn)行排序。
collections是一個(gè)python的內(nèi)建模塊。
示例如下:
# -*- 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) 結(jié)果: ('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) 結(jié)果: ('dic is:', [('b', 1), ('a', 2), ('b0', 3), ('a1', 4)]) ('jsons:', '{"b": 1, "a": 2, "b0": 3, "a1": 4}')
補(bǔ)充拓展:Python字典轉(zhuǎn)Json并使用多種格式實(shí)現(xiàn)
前言:
利用Python數(shù)據(jù)轉(zhuǎn)換的套路可以遵循:變量定義的位置,字典操作,列表操作,這個(gè)三部分的內(nèi)容可以處理大部分的數(shù)據(jù)相關(guān)需求。
1.下面我們先看這個(gè)腳本:
#從字典轉(zhuǎn)換為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))
輸出結(jié)果:
"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
首先導(dǎo)入所需要的三個(gè)函數(shù):1)導(dǎo)入distutils.log.warn()用來(lái)應(yīng)對(duì)python2中print語(yǔ)句和python3中print()語(yǔ)句引起的差異;2)json.dumps(),用來(lái)返回一個(gè)表示python對(duì)象的字符串;pprint.pprint(),用來(lái)美觀地輸出python的對(duì)象。
BOOKs數(shù)據(jù)結(jié)構(gòu)是一個(gè)python字典,這里沒(méi)有用列表這樣扁平的數(shù)據(jù)結(jié)構(gòu),是因?yàn)樽值淇梢詷?gòu)建結(jié)構(gòu)化層次的屬性(BOOKs表示通過(guò)ISBN標(biāo)識(shí)的書(shū)籍還具備額外的信息:書(shū)名、作者、出版年份)。值得注意的是,在等價(jià)的json表示方法中會(huì)移除所有額外的逗號(hào)。
Python的Json模塊序列化與反序列化的過(guò)程分別是 encoding和 decoding。encoding-把一個(gè)Python對(duì)象編碼轉(zhuǎn)換成Json字符串;decoding-把Json格式字符串解碼轉(zhuǎn)換成Python對(duì)象。要使用json模塊必須先import json
Json的導(dǎo)入導(dǎo)出
用write/dump是將Json對(duì)象輸入到一個(gè)python_object中,如果python_object是文件,則dump到文件中;如果是對(duì)象,則dump到內(nèi)存中。這是序列化
2.縱向數(shù)據(jù)轉(zhuǎn)換為橫向數(shù)據(jù)
1.情況:由于目前spark直接生成的json是每行一個(gè)對(duì)象,類似以下的json數(shù)據(jù)格式
[ { "cardno": 100000026235, "trdate": "2015-12-25", "otime": "16:13:33", "dtime": "16:21:10", "osite": 16, "dsite": 15, "tfc": 1 }]
2.需求:轉(zhuǎn)換成Json column arrays 數(shù)組格式 [{},{}]如下
{'cardno': [100006734923], 'trdate': ['2015-12-25'], 'dtime': ['17:56:45'], 'dsite': [40], 'osite': [41], 'otime': ['17:50:11'], 'tfc': [1]}
3.Python代碼實(shí)現(xiàn):
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)
切換本地文件路徑轉(zhuǎn)換。
以上這篇在python中利用dict轉(zhuǎn)json按輸入順序輸出內(nèi)容方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python QTimer實(shí)現(xiàn)多線程及QSS應(yīng)用過(guò)程解析
這篇文章主要介紹了Python QTimer實(shí)現(xiàn)多線程及QSS應(yīng)用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Python統(tǒng)計(jì)單詞出現(xiàn)的次數(shù)
最近經(jīng)理交給我一項(xiàng)任務(wù),統(tǒng)計(jì)一個(gè)文件中每個(gè)單詞出現(xiàn)的次數(shù),列出出現(xiàn)頻率最多的5個(gè)單詞。本文給大家?guī)?lái)了python 統(tǒng)計(jì)單詞次數(shù)的思路解析,需要的朋友參考下吧2018-04-04python接口自動(dòng)化之使用token傳入到header消息頭中
這篇文章主要介紹了python接口自動(dòng)化之使用token傳入到header消息頭中問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08用Python PIL實(shí)現(xiàn)幾個(gè)簡(jiǎn)單的圖片特效
這篇文章主要介紹了用Python PIL實(shí)現(xiàn)幾個(gè)簡(jiǎn)單的圖片特效,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python發(fā)qq消息轟炸虐狗好友思路詳解(完整代碼)
因?yàn)槲业哪硞€(gè)好友在情人節(jié)的時(shí)候秀恩愛(ài),所以我靈光一閃制作了qq消息轟炸并記錄了下來(lái)。本文給大家分享python發(fā)qq消息轟炸虐狗好友思路詳解,感興趣的朋友一起看看吧2020-02-02python中dot函數(shù)運(yùn)算過(guò)程總結(jié)
dot函數(shù)為numpy庫(kù)下的一個(gè)函數(shù),主要用于矩陣的乘法運(yùn)算,其中包括:向量?jī)?nèi)積、多維矩陣乘法和矩陣與向量的乘法,下面這篇文章主要給大家介紹了關(guān)于python中dot函數(shù)運(yùn)算過(guò)程的相關(guān)資料,需要的朋友可以參考下2022-09-09python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5滾動(dòng)條控件QScrollBar詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5滾動(dòng)條控件QScrollBar詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03解決安裝torch后,torch.cuda.is_available()結(jié)果為false的問(wèn)題
這篇文章主要介紹了解決安裝torch后,torch.cuda.is_available()結(jié)果為false的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12