Python字典方法

      就像其他內建類型一樣,字典也有方法。這些方法非常有用,但是可能不會像列表或者字符串方法那樣被頻繁使用,以下是一些具體的方法。


1.clear方法

   clear方法清除字典中所有的項。這是個原地操作(類似於list.sort),所以無返回值(或者說返回None)

   

   下面來分析以下兩種情況:

    第一種:                                                                   第二種:

                                                 

     兩種情況中,x和y最初對應同一個字典。情況一中,我將通過將x關聯到一個新的空字典來“清空”它,這對y一點影響也沒有,它還原到原先的字典中。這可能是所需要的行爲,但是如果真的想清空原始字典中的所有元素,必須使用clear方法。


2.copy方法

    copy方法返回一個具有相同鍵-值對的新字典(這個方法實現的是淺複製,因爲值本身就是相同的,而不是副本)

      

      可以看到,當在副本中替換值的時候,原始字典不受影響,但是,如果修改了某個值(原地址修改,而不是替換),原始字典也會改變,因爲同樣的值也存儲在原字典中

           避免這個問題的一種方法就是使用深複製,複製其包含的所有值。可以用copy模塊的deepcopy函數來完成操作:

         


3.fromkeys

       fromkeys方法使用給定的鍵建立新的字典,每一鍵都對應一個默認的None

         

       剛纔的例子中首先構造了一個空字典,然後調用它的fromkeys方法,建立另一個詞典。此外,您還可以直接在dict上調用該方法,前面講過,dict是所有字典的類型

       

       如果不想使用None作爲默認值,也可以以自己提升默認值。

       



4.get方法

       get方法是個更寬鬆的訪問字典項的方法。一般來說,如果試圖訪問字典中不存在的項時會出錯。

       

       可以看到,當使用get訪問一個不存在的鍵的時候,沒有異常,而得道了None的值,還可以自定義默認值,替換None

       

       如果鍵存在,get用起來就像是普通的字典查詢一樣:

       


5.has_key

       has_key方法可以檢驗字典中是否含有特定的鍵。表達式d.has_key(k)相當於表達式k    in     d。使用哪個方法很大程度上取決於個人的喜好。

       


6.items和iteritems

       items方法所有項以列表方式返回,列表中的每一項都表示爲(鍵,值)對的形式但是項在返回時並沒有遵循待定的次序。

       



7.key和iterkeys

        keys方法將字典中的鍵以列表形式返回,而iterkeys則返回針對鍵的迭代器。


8.pop

        pop方法用來獲得對應於給定鍵的值,然後將這個鍵-值對從字典中移除。

       



9.popitem

       popitem方法類似於list.pop,後者會彈出列表的最後一個元素。但是不同的是,popitem彈出隨機的項,因爲字典並沒有“最後的元素”或者其他有關順序的概念。若想一個接一個地移除並處理,這個方法就非常有效了

     

     儘管popitem和列表的pop方法很類似,但是字典沒有與append等價的方法。因爲字典是無序的。類似於append的方法是沒有任何意義的。



10.setdefault

      setdefault方法在某種程度上類似於get方法,能夠獲得與之給定鍵相關聯的值,除此之外,setdefault還能在字典中不含有給定鍵的情況下設定相應的鍵值。

       

       可以看到,當鍵不存在的時候,setdefault返回默認值並且相應的更新字典。如果鍵存在那麼就返回與其對應的值,但是不改變字典。默認值是可選的,這點和get一樣。如果不設定會默認使用None。

       

11.update

     update方法可以利用一個字典更新另一個字典:

     

   

    提供的字典中的項會被添加到舊的字典中,若有相同的鍵則會進行覆蓋。

     update方法可以使用與調用dict函數同樣的方式進行調用,這點在本章前面已經討論。這意味着update可以和映射,擁有(鍵-值)對的隊列(或者其他可迭代的對象)以及關鍵字參數一起調用。



12.values和itervalues

      values方法以列表形式返回字典中的值(itervalues返回值的迭代器)。與返回鍵的列表不相同的是,返回值的列表中可以包含重複的元素:

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章