詳解Python中的Dict(下篇)
學(xué)委前面展示dict的概念和增刪查改!這次我們把其他函數(shù)介紹補(bǔ)充了。

dict 的元素定位(鍵/值定位)和遍歷
dict這種對(duì)象我們可以通過(guò) keys() 獲取所有的鍵的列表;
dict這種對(duì)象我們可以通過(guò) values() 獲取所有的值的列表.
這樣有列表我們可以遍歷整個(gè)dict對(duì)象。
但是更多使用下面的風(fēng)格:
mydict = {
'name': 'leixuewei',
'date': '20211104'
}
print("遍歷字典-----開(kāi)始")
for k, v in mydict.items():
print("key[%s] = value[%s]" % (k, v)) # 直接打印
print("遍歷字典-----結(jié)束")
這幾行代碼是可以直接復(fù)制運(yùn)行。
下面學(xué)委準(zhǔn)備了更加全面的代碼,展示了獲取key/value和遍歷操作等:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/3 11:34 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學(xué)委
# @XueWeiTag: CodingDemo
# @File : dict_demo3.py
# @Project : hello
# 比如學(xué)委的信息作為一個(gè)字典
info_dict = 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)注支持
info_dict['meta-data'] = dict()
print("包含特定key ?%s" % ('gongzhong_hao' in info_dict))
print('所有鍵的列表:%s ' % info_dict.keys())
print('所有值的列表:%s ' % info_dict.values())
print('獲取key對(duì)應(yīng)的值:', info_dict['name'])
# 獲取但是不設(shè)置到info_dict內(nèi)
print('獲取key DemoKey 對(duì)應(yīng)的值:', info_dict.get('DemoKey', '匿名用戶(hù)雷學(xué)委'))
# print('獲取key對(duì)應(yīng)的值:', info_dict['DemoKey']) #這句會(huì)拋出異常:KeyError: 'DemoKey'
# 如果沒(méi)有某個(gè)key,進(jìn)行設(shè)置默認(rèn)值并返回
print('獲取key name對(duì)應(yīng)的值:', info_dict.setdefault('name', '匿名用戶(hù)雷學(xué)委'))
print('獲取key DemoKey 對(duì)應(yīng)的值:', info_dict.setdefault('DemoKey', '匿名用戶(hù)雷學(xué)委'))
print('獲取key DemoKey 對(duì)應(yīng)的值:', info_dict['DemoKey'])
print("遍歷字典-----開(kāi)始")
for key, value in info_dict.items():
print("\tkey[%s] = value[%s]" % (key, value))
print("遍歷字典-----結(jié)束")
info_dict.clear() # 清空整個(gè)字典對(duì)象
效果如下:

這些操作都是比較基礎(chǔ),但是必須隨手就來(lái)的,所以必須敲熟了。
dict的復(fù)制(拷貝)
字典的復(fù)制可以通過(guò)copy函數(shù)來(lái)實(shí)現(xiàn),但是它是淺拷貝,也就是拷貝了但不完全拷貝
簡(jiǎn)單來(lái)說(shuō)就是拷貝key,但是新字典的值還是沿用舊字典的值的引用。
這里也順帶提一提fromkeys函數(shù),這個(gè)創(chuàng)建的新字典,只照搬了key列表,新字典內(nèi)所有值都是空的。
說(shuō)這么多,我們看看字典的代碼示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/3 11:34 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學(xué)委
# @XueWeiTag: CodingDemo
# @File : dict_demo4.py
# @Project : hello
'''dict的拷貝問(wèn)題'''
# 比如學(xué)委的信息作為一個(gè)字典
info_dict = 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)注支持
info_dict['meta-data'] = dict()
# 選擇指定key列表局部拷貝
keys_copied_dict = info_dict.fromkeys(['name', 'blogs', 'zone'])
print("keys_copied_dict :", keys_copied_dict)
# 淺拷貝//Shadow Copy: 全拷貝但不完全拷貝
copied_dict = info_dict.copy()
print("copied_dict :", copied_dict)
shadow_copied_dict = info_dict.copy()
print('shadow_copied_dict:', shadow_copied_dict)
## 雷學(xué)委提示:下面一行代碼修改了‘meta-data'這個(gè)key對(duì)應(yīng)的值,我們并沒(méi)有直接修改shadow_copied_dict
info_dict['meta-data']['date'] = '04 Nov 2021'
print('info_dict:', info_dict)
print('shadow_copied_dict:', shadow_copied_dict) # 這里輸出看到變化也傳遞給了 shadow_copied_dict
print("*"*16 + "清空info_dict")
info_dict.clear()
print('info_dict:', info_dict) # clear 清空元素后 打印info_dict
print('shadow_copied_dict:', shadow_copied_dict) # clear 清空元素后打印 copied_dict
效果如下:

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python3.5 創(chuàng)建文件的簡(jiǎn)單實(shí)例
下面小編就為大家分享一篇Python3.5 創(chuàng)建文件的簡(jiǎn)單實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python中pop()函數(shù)的語(yǔ)法與實(shí)例
這篇文章主要給大家介紹了關(guān)于python中pop()函數(shù)語(yǔ)法與實(shí)例的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
python隨機(jī)生成庫(kù)faker庫(kù)api實(shí)例詳解
今天小編就為大家分享一篇python隨機(jī)生成庫(kù)faker庫(kù)api實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python實(shí)現(xiàn)PID算法及測(cè)試的例子
今天小編就為大家分享一篇python實(shí)現(xiàn)PID算法及測(cè)試的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Linux(Redhat)安裝python3.6虛擬環(huán)境(推薦)
這篇文章主要介紹了Linux(Redhat)安裝python3.6虛擬環(huán)境,非常不錯(cuò),具有參考借鑒價(jià)值 ,需要的朋友可以參考下2018-05-05
使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程
Twisted的異步工作模式使其在非阻塞情況下可以擁有較高的性能,這里我們來(lái)看一下使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程,包括服務(wù)器端與客戶(hù)端的實(shí)踐.2016-05-05
Python截圖的五個(gè)方法實(shí)例總結(jié)
學(xué)習(xí)一門(mén)語(yǔ)言最好的方法便是實(shí)踐,想要拿Python寫(xiě)一個(gè)截圖工具,下面這篇文章主要給大家介紹了關(guān)于Python截圖的五個(gè)方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12

