技術總編:張 邯
在之前的推文中我們已經介紹過字典的定義和特點(《資料型別——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...