溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行Python中Dict的元素定位和遍歷

發(fā)布時(shí)間:2021-12-16 10:58:03 來源:億速云 閱讀:665 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行Python中Dict的元素定位和遍歷,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

dict 的元素定位(鍵/值定位)和遍歷

dict這種對(duì)象我們可以通過 keys() 獲取所有的鍵的列表;

dict這種對(duì)象我們可以通過 values() 獲取所有的值的列表.

這樣有列表我們可以遍歷整個(gè)dict對(duì)象。

但是更多使用下面的風(fēng)格:

mydict = {
    'name': 'leixuewei',
    'date': '20211104'
}
print("遍歷字典-----開始")
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ā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', '匿名用戶雷學(xué)委'))
# print('獲取key對(duì)應(yīng)的值:', info_dict['DemoKey']) #這句會(huì)拋出異常:KeyError: 'DemoKey'
# 如果沒有某個(gè)key,進(jìn)行設(shè)置默認(rèn)值并返回
print('獲取key name對(duì)應(yīng)的值:', info_dict.setdefault('name', '匿名用戶雷學(xué)委'))
print('獲取key DemoKey 對(duì)應(yīng)的值:', info_dict.setdefault('DemoKey', '匿名用戶雷學(xué)委'))
print('獲取key DemoKey 對(duì)應(yīng)的值:', info_dict['DemoKey'])
print("遍歷字典-----開始")
for key, value in info_dict.items():
    print("\tkey[%s] = value[%s]" % (key, value))
print("遍歷字典-----結(jié)束")
info_dict.clear()  # 清空整個(gè)字典對(duì)象

效果如下:

如何進(jìn)行Python中Dict的元素定位和遍歷

這些操作都是比較基礎(chǔ),但是必須隨手就來的,所以必須敲熟了。

dict的復(fù)制(拷貝)

字典的復(fù)制可以通過copy函數(shù)來實(shí)現(xiàn),但是它是淺拷貝,也就是拷貝了但不完全拷貝

簡單來說就是拷貝key,但是新字典的值還是沿用舊字典的值的引用。

這里也順帶提一提fromkeys函數(shù),這個(gè)創(chuàng)建的新字典,只照搬了key列表,新字典內(nèi)所有值都是空的。

說這么多,我們看看字典的代碼示例:

#!/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的拷貝問題'''
# 比如學(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ā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)的值,我們并沒有直接修改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

效果如下:

如何進(jìn)行Python中Dict的元素定位和遍歷

關(guān)于如何進(jìn)行Python中Dict的元素定位和遍歷就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI