遍歷刪除字典元素 字典常用操作小結

2021-10-14 17:06:54 字數 4455 閱讀 4048

技術總編:張   邯

在之前的推文中我們已經介紹過字典的定義和特點(《資料型別——dict、set與frozenset簡析》)。字典是一系列鍵值對的可修改的無序組合,通過乙個大括號來定義,每個鍵都與乙個值相對應,構成key-value鍵值對,可以通過訪問鍵來得到相應的值,其中鍵是唯一的,值可以不唯一。今天的推文我們介紹下python中字典的常用操作。

1.訪問字典

由於字典沒有索引值,因此我們不能通過索引來查詢對應的值。通過在方括號內輸入相應的鍵可以查詢對應的值,若輸入不存在的鍵,則會報錯。

in [1]: dicta=in [2]: dicta['ben']out[2]: 1
也可以通過get方法來獲取某個鍵對應的值,這個同dict[key]差不多,只是當查詢的鍵不存在就預設返回none,返回值可以通過加入引數自由定義。

in [3]: print(dicta.get('naen'))  #若訪問字典中不存在的鍵,則返回nonenonein [4]: print(dicta.get('naen',-1))  #設定不存在時的返回值為-1-1
2.修改字典

當字典建立好之後,我們可以修改字典中某個鍵的值,可直接輸入鍵,在後面跟上要修改為的值。若字典中沒有這個鍵值對時,則加入到字典中,建立為新的鍵值對。

當字典中有這個鍵值對時,修改對應的值:

in [5]: dicta['ben']=10in [6]: dictaout[6]:  #可以看到鍵' ben '對應的值由1被修改為10
當字典中沒有這個鍵值對時,則建立新的鍵值對:
in [7]: dicta['naen']='girl'  in [8]: dictaout[8]:   #建立為新的鍵值對
也可以使用dict.setdefault(k,v)方法,其中k指鍵,v是值。其作用是如果字典中包含有k鍵,則返回原字典中該鍵對應的值,而且不會修改原字典,否則將該鍵值對(k,v)新增到字典中,並且返回v:
in [9]: dicta.setdefault("age",3)out[9]: 3  #這個鍵不存在,返回設定的值in [10]: dictaout[10]:   #這個鍵值對並不存在,所以新增上in[11]: dicta.setdefault("age",4)out[11]: 3  #這個鍵已經存在,所以返回原字典的值in [12]: dictaout[12]:    #字典中仍然不變
3.刪除字典元素dict.pop(key[,default])刪除並返回對應的指定鍵的值,沒找到這個值就返回default:
in [13]: dicta=in [14]: dicta.pop('ben')  #這裡我們刪除鍵值對「'ben':1」out[14]: 1  #返回對應值1。 in [15]: dictaout[15]:   #鍵值對「'ben':1」被刪除掉了
dict.popitem()表示從dict中隨機刪除一項並以元組的形式返回該項,但在刪除時不能指定刪除項,只能隨機刪除一項:
in [15]: dicta=in [16]: dicta.popitem()out[16]: ('ben', 1) #隨機刪除了最後一項,並以元組的形式返回了該項。
dict.clear()表示刪除dict的所有項,即將字典清空:

in [17]: dicta.clear()in [18]: dictaout[18]: {} # 返回了乙個空字典
4.字典的拷貝

通過dict2=dict1.copy()方法,可以將字典dict1的內容拷貝給dict2,但也只是內容的拷貝,dict1和dict2所指的記憶體空間是不同的:

in [19]: dicta=in [20]: dictb=dicta.copy()  #將字典dicta的內容拷貝給dictbin [21]: dictbout[21]:   #兩個字典內容相同
in [22]: id(dicta)out[22]: 1630299596120in [23]: id(dictb)out[23]: 1630300339944
可以看到,雖然兩個字典內容一樣,但是在記憶體空間中存放的位址是不同的

5.字典的更新

使用dict.update()更新字典時,如果與原字典鍵值對中的鍵重複但值不同,則會被更新,不存在的鍵值對會增加到被更新字典中:

in [24]: dic1= in [25]: dic2= in [26]: dic2.update(dic1)  #將字典dic1中的鍵值對更新到字典dic2中 in [27]: dic1out[27]:   #字典dic1元素沒有變化 in [28]: dic2out[28]:   #字典dic2中多了「'hobby': 'eat'」鍵值對
由結果可以看出,更新之後字典dic1中的鍵值對更新到字典dic2中,原來的dic1不變,就是將沒有的那個鍵值對加到dic2中。

6. 用fromkeys構造字典

dict.fromkeys(seq,val=none)建立並返回乙個新字典,以seq(序列)中的元素作為該字典的鍵,val作為該字典中所有鍵對應的初始值,如果不提供此值,則預設為none。

in [29]: str1="lzy"  #定義str1作為字典的鍵in [30]: dict3={} #定義乙個空字典in [31]: dict3=dict3.fromkeys(str1,7)  #以str1元素作為鍵,對應值都為7in [32]: dict3out[32]:
7.字典的返回值

(1)關於字典的返回值,當指定選項不同,其返回的結果也不同。雖然返回的都是列表,但組成元素不同:當指定keys()時,返回字典中鍵的列表;當指定values()時,返回字典中值的列表;當指定items()時,返回字典中鍵值對的列表。

in [33]: dic1.keys()out[33]: dict_keys(['name', 'age', 'hobby']) #返回的是列表,其元素是所有的鍵 in [34]: dic1.values()out[34]: dict_values(['ben', 3, 'eat']) #返回的是列表,其元素是所有的值 in [35]: dic1.items()out[35]: dict_items([('name', 'ben'), ('age', 3),('hobby', 'eat')])  #返回值是由鍵值對構成的元組的列表
(2)承接上面字典的返回值,字典在遍歷時預設情況及指定key()遍歷的是鍵;指定values()時,遍歷的是值;指定items()時,遍歷的是鍵值對:
in [36]: for i in dic1:  #預設情況下遍歷的是鍵       :     print(i)
輸出結果為:
nameagehobby
在指定values時,遍歷的是值:
in [37]: for i in dic1.values():       :     print(i) # 遍歷結果是字典的值
輸出結果為:
ben3eat
在指定items時,遍歷的是鍵值對:
in [38]: for k,v in dic1.items():       :     print(k,v) # 遍歷的是字典的鍵值對
輸出結果為:
name benage 3hobby eat

對我們的推文累計打賞超過1000元,我們即可給您開具發票,發票類別為「諮詢費」。用心做事,不負您的支援!往期推文推薦xpath helper助xpath爬蟲一臂之力

查詢變數?用「codebook」!

distinct命令用法一覽

stata資料分析技術應用培訓

玩轉python之「手把手」教你爬資料(一)

玩轉python之「手把手」教你爬資料(二)

labelsof和labelbook介紹

statalist上的「火雲邪神」

爬蟲實戰程式的函式封裝

zipfile(二)

利用collapse命令轉化原始資料

stata中的數值型

爬蟲實戰——聚募網股權眾籌資訊爬取

duplicates drop之前,我們要做什麼?

型別內建函式-type() isinstance()

資料含義記不住?

—— label「大神」來幫忙

zipfile(一)

tabplot命令

python 迴圈遍歷字典元素

乙個簡單的for語句就能迴圈字典的所有鍵,就像處理序列一樣 in 1 d in 2 for key in d print key,corresponds to d key y corresponds to 2 x corresponds to 1 z corresponds to 3 在python...

字典相關操作 遍歷 合併

字典是python語言中唯一的對映型別。是一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個鍵值對之間用逗號 分割,整個字典包括在 中 格式如下所示 dict 鍵一般是唯一的,如果重複最後的乙個鍵值對會替換前面的,值不需要唯一。1.字典遍歷 dict 遍...

Python 字典常用操作

建立字典操作很簡單,只需要記住使用大括號即可 python中的三種常用資料型別 列表 元組 字典 建立乙個空字典 dic 建立乙個有初始值的字典 dic1 當然,字典的鍵,值均可以是int型別。對於以上的dic1,如果還想增加乙個15歲的bob,那麼只需要 dic1 bob 15當然,和python...