Python中defaultdict與lambda運算式用法

來源:互聯網
上載者:User
這篇文章主要介紹了Python中defaultdict與lambda運算式用法,在這裡分享給大家,需要的朋友可以參考下

本文執行個體講述了Python中defaultdict與lambda運算式用法。分享給大家供大家參考,具體如下:

從教程中看到defaultdict是一個類,在一台裝有Python2.7.6的電腦上使用發現不存在。在文檔中搜尋了一下也沒有找到,想當然以為這或許是Python 3.X專有的。因為教程就是基於Python 3.X實現的。後來換了一台裝有Python 3.X的電腦依然出問題。

求助於網路,發現這個類其實是collections模組中的一個類。看來,學習很難擺離網絡環境啊!

這個類是dict的一個子類,重寫了一個方法並增加了一個事件變數。在執行個體化的時候,第一個參數提供給default_factory的初始化函數。這個參數可以是一個類型或者函數,至於是類型這不難理解,其實類型基本上都是工廠函數。但是,有時候我們想用此方法傳入一個常量,這個時候就需要自己單獨設計一個常量函數或者直接使用lambda運算式。

先看如下的示範:

>>> fromcollections import defaultdict>>> c1 =defaultdict(int)>>>c1.get(123)>>>c1.get('abc')>>> defConst():return 23>>> c2 =defaultdict(Const)>>>c2.get(123)>>> c2defaultdict(<functionConst at 0x000001D7E26F58C8>, {})>>>c2[123]23>>>c2['abc']23>>>c1[123]0

從上面可以看出,這種方式可以為一個字典對象不存在的key自動給出一個預設的value。用上面的這種方式自然是可以實現value為某個常量,但是使用lambda可以使得代碼更為簡潔:

>>> c3 =defaultdict(lambda :123)>>>c3[12]123

在最近遇到的使用情境中,這種方法能夠讓代碼變得簡潔不少,而習慣後的代碼可讀性也沒有任何影響。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.