詳解Python中的Dict
什么是dict?
dict全稱為dictionary(字典),人如其名,像字典一樣可以根據(jù)索引定位到特定的文字。
在python的dict中,我們可以通過(guò)key來(lái)定位到特定的value。

如上圖,這就是dict的內(nèi)部結(jié)構(gòu)。key vs value 這樣的配對(duì),key3再次套娃嵌套內(nèi)部取出來(lái)也是一個(gè)dict。
如此反復(fù),一個(gè)dict可以變得很多層次,但是特征還是key value一一配對(duì),只是value能是普通類型也能是dict。
之前說(shuō)了list是一連串的數(shù)據(jù),唯一找到元素的方式是通過(guò)下標(biāo)逐個(gè)尋覓,從某種角度來(lái)看,list算是一個(gè)有下標(biāo)為key的字典了。(當(dāng)然嚴(yán)格來(lái)說(shuō)list和dict是完全不同的兩種數(shù)據(jù)類型)。
說(shuō)這么多,我們看看字典的代碼示例:
dict1 = dict()
dict1['location'] = 'Guangdong'
dict2 = {'name':'雷學(xué)委', 'langs':['Java', 'Scala', 'NodeJs', 'Python'] }
代碼中的dict1 和 dict2 這兩個(gè)都是字典。
我們下面看看dict的增刪查改
跟list類似,dict內(nèi)的元素說(shuō)可以修改的(mutable)。
我們可以直接使用類似如下代碼,對(duì)特定鍵的值重新賦值。
dict['key1'] = new_value #對(duì)dict對(duì)象的key1鍵重新賦值。
下面我們直接看代碼,一遍過(guò)一下添加/刪除/更改元素以及清空字典的操作。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/3 11:34 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學(xué)委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
# 比如學(xué)委的信息作為一個(gè)字典
info_dict = dict()
print('info_dict:', info_dict)
# 添加元素到信息字典
info_dict['name'] = '雷學(xué)委'
print('info_dict:', info_dict)
# 更新為英文名
info_dict['name'] = 'LEI_XUE_WEI' # 或者改為 'levin'
info_dict['blogs'] = '93' # 目前發(fā)表了93個(gè)博客文字。
info_dict['gongzhong_hao'] = '【雷學(xué)委】' # 歡迎過(guò)來(lái)關(guān)注支持
print('info_dict:', info_dict)
print('gongzhong_hao:', info_dict['gongzhong_hao'])
del info_dict['blogs'] # 刪除元素
print('info_dict:', info_dict)
info_dict.clear()
print('info_dict:', info_dict) # clear 清空元素后可以打印dict
del info_dict # 直接刪除整個(gè)信息字典
# print('info_dict:', info_dict) 不能在打印了
效果如下:

特別指出,為了讓程序不會(huì)中斷,我們拿到一個(gè)陌生的dict通常會(huì)寫類似如下代碼:
#我們也經(jīng)常會(huì)用這種寫法,來(lái)獲取某個(gè)key的值,這樣程序不會(huì)被異常中斷
gongzhonghao = info_dict['gongzhong_hao'] if 'gongzhong_hao' in info_dict else 'N/A'
print('gongzhong_hao:', gongzhonghao)
總結(jié)
dict使用起來(lái)很方便,非常輕松就根據(jù)某個(gè)key定位到值了。
我們開(kāi)發(fā)中經(jīng)常用到這種結(jié)構(gòu),不管是Python/Java,幾乎所有開(kāi)發(fā)都會(huì)用到字典類型。
所以python初學(xué)者務(wù)必把dict操作搞熟練,更多函數(shù)可以看dict的源碼
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python 靜態(tài)導(dǎo)入與動(dòng)態(tài)導(dǎo)入的實(shí)現(xiàn)示例
Python靜態(tài)導(dǎo)入和動(dòng)態(tài)導(dǎo)入是指導(dǎo)入模塊或模塊內(nèi)部函數(shù)的兩種方式,本文主要介紹了Python 靜態(tài)導(dǎo)入與動(dòng)態(tài)導(dǎo)入的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
Pyqt5實(shí)現(xiàn)英文學(xué)習(xí)詞典
這篇文章主要為大家詳細(xì)介紹了Pyqt5實(shí)現(xiàn)英文學(xué)習(xí)詞典的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
Python爬蟲實(shí)現(xiàn)Cookie模擬登錄
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)Cookie模擬登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
python腳本生成caffe train_list.txt的方法
下面小編就為大家分享一篇python腳本生成caffe train_list.txt的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python基于機(jī)器學(xué)習(xí)預(yù)測(cè)股票交易信號(hào)
近年來(lái),隨著技術(shù)的發(fā)展,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)在金融資產(chǎn)量化研究上的應(yīng)用越來(lái)越廣泛和深入。目前,大量數(shù)據(jù)科學(xué)家在Kaggle網(wǎng)站上發(fā)布了使用機(jī)器學(xué)習(xí)/深度學(xué)習(xí)模型對(duì)股票、期貨、比特幣等金融資產(chǎn)做預(yù)測(cè)和分析的文章。本文就來(lái)看看如何用python預(yù)測(cè)股票交易信號(hào)2021-05-05
anaconda安裝后打不開(kāi)解決方式(親測(cè)有效)
Anaconda是一個(gè)和Canopy類似的科學(xué)計(jì)算環(huán)境,但用起來(lái)更加方便,下面這篇文章主要給大家介紹了關(guān)于anaconda安裝后打不開(kāi)解決的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Python輸入圓半徑,計(jì)算圓周長(zhǎng)和面積的實(shí)現(xiàn)方式
這篇文章主要介紹了Python輸入圓半徑,計(jì)算圓周長(zhǎng)和面積的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

