python中json、字典的區(qū)別以及相互轉(zhuǎn)換方法
前言
json,是一種輕量級(jí)的數(shù)據(jù)交換格式,由JavaScript語(yǔ)言創(chuàng)建,廣泛應(yīng)用于網(wǎng)頁(yè)數(shù)據(jù)交互,常見(jiàn)于爬蟲和數(shù)據(jù)分析領(lǐng)域。
json格式簡(jiǎn)潔、結(jié)構(gòu)清晰,存儲(chǔ)格式為:鍵值對(duì)(key:value)
在python中,字典(dict)與json非常相似,都是鍵值對(duì)(key:value)形式。
一、 json與字典的區(qū)別
json與字典的區(qū)別,如下表:
| json格式 | dict(字典,python) |
|---|---|
| 一種數(shù)據(jù)格式,純字符串。可以被解析成python的字典(dict)形式或其他形式。 | 一種數(shù)據(jù)結(jié)構(gòu) |
| key只能是字符串 | key可以是python中任意不可變數(shù)據(jù):字符串、數(shù)值、元組等 |
| key可以是有序、重復(fù)的 | key不能重復(fù) |
| 字符串只能使用雙引號(hào) | 字符串可以用單引號(hào)、雙引號(hào)、三引號(hào) |
| 任意key存在默認(rèn)值undefined | 任意key沒(méi)有默認(rèn)值 |
| json:true、false、null、string | dict:Ture、False、None、str |
| json中文是unicode編碼,如,“\u6211” |
二、json與字典相互轉(zhuǎn)換
首先,創(chuàng)建一個(gè)字典(a_dict),作為舉例。
a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
print(type(a_dict))
print(a_dict)

(一)將字典轉(zhuǎn)化為json格式數(shù)據(jù)
json.dumps():將python數(shù)據(jù)類型轉(zhuǎn)換成json字符串,dict→json
語(yǔ)法:
json.dumps(obj,ensure_ascii=True,indent=None,encoding=“utf8”,sort_keys=False,separators=None…)
| 常用參數(shù) | 釋義 |
|---|---|
| ensure_ascii | 默認(rèn)為True,中文編碼為unicode;改成False,則可以輸出中文漢字。 |
| indent | 默認(rèn)為None,參數(shù)根據(jù)格式縮進(jìn)顯示,表示縮進(jìn)幾個(gè)空格,接收int類型數(shù)值。 |
| sort_keys | 默認(rèn)為False,不按字典的key排序;改成True,按照字典的key排序 |
| separators | 指定分隔符,默認(rèn)為None;包含dict每個(gè)元素間分隔符(逗號(hào)“,”),key與value之間的分隔符(冒號(hào)“:”),指定分隔符后,原來(lái)的分隔符則直接去掉 |
| encoding | 編碼,默認(rèn)utf-8 |
將字典a_dict,轉(zhuǎn)換為json格式數(shù)據(jù),代碼如下:
# 將字典a_dict轉(zhuǎn)換為json
import json
a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
a_json = json.dumps(a_dict)
print(type(a_json))
print(a_json)

注:字典a_dict,轉(zhuǎn)換為json數(shù)據(jù)a_json后,有以下幾點(diǎn)變化:
(1)數(shù)據(jù)類型由字典dict變成str
(2)a_dict中的單引號(hào)、三單引號(hào)全部統(tǒng)一為雙引號(hào)
(3)中文“您好”轉(zhuǎn)換為unicode編碼“\u60a8\u597d”。
如果想要正常顯示中文,可以加入?yún)?shù):ensure_ascii=False,代碼變?yōu)椋?/p>
# 將字典a_dict轉(zhuǎn)換為json
import json
a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
a_json = json.dumps(a_dict, ensure_ascii=False)
print(type(a_json))
print(a_json)

(4)如果數(shù)據(jù)很多,直接一排一排這樣顯示,很難看清結(jié)構(gòu)。加入?yún)?shù):indent=縮進(jìn)空格數(shù),可以美觀清晰的輸出,代碼如:
import json
a_dict = {'a': 1, "b": 'qw', '''c''': ['q', 'w'], 'd': '您好'}
a_json = json.dumps(a_dict, ensure_ascii=False, indent=2) # 縮進(jìn)2個(gè)空格
print(type(a_json))
print(a_json)
(二)將json格式數(shù)據(jù)轉(zhuǎn)換為字典
json.loads():將json字符串解析成python數(shù)據(jù)類型,json→dict
將a_json轉(zhuǎn)換為字典格式數(shù)據(jù),如下:
b_dict = json.loads(a_json) print(type(b_dict)) print(b_dict)

以上就是python中,json與字典數(shù)據(jù)格式之間的區(qū)別,及相互轉(zhuǎn)換方法,可供參考。
總結(jié)
到此這篇關(guān)于python中json、字典的區(qū)別以及相互轉(zhuǎn)換方法的文章就介紹到這了,更多相關(guān)python json和字典相互轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Pytorch中簡(jiǎn)單使用tensorboard
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Pytorch使用tensorboard展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Python表格處理模塊xlrd在Anaconda中的安裝方法
本文介紹在Anaconda環(huán)境下,安裝Python讀取.xls格式表格文件的庫(kù)xlrd的方法,xlrd是一個(gè)用于讀取Excel文件的Python庫(kù),本文介紹了xlrd庫(kù)的一些主要特點(diǎn)和功能,感興趣的朋友一起看看吧2024-04-04
python3實(shí)現(xiàn)UDP協(xié)議的服務(wù)器和客戶端
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)UDP協(xié)議的服務(wù)器和客戶端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Python內(nèi)存管理與泄漏排查實(shí)戰(zhàn)分享
這篇文章主要介紹了Python內(nèi)存管理與泄漏排查實(shí)戰(zhàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
python實(shí)現(xiàn)將一維列表轉(zhuǎn)換為多維列表(numpy+reshape)
今天小編就為大家分享一篇python實(shí)現(xiàn)將一維列表轉(zhuǎn)換為多維列表(numpy+reshape),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python計(jì)算機(jī)視覺(jué)實(shí)現(xiàn)全景圖像拼接示例
這篇文章主要為大家介紹了python計(jì)算機(jī)視覺(jué)實(shí)現(xiàn)全景圖像拼接示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

