国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python中dictionary items()系列函數(shù)的用法實(shí)例

2020-02-23 05:41:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python中dictionary items()系列函數(shù)的用法,對(duì)Python程序設(shè)計(jì)有很好的參考借鑒價(jià)值。具體分析如下:

先來(lái)看一個(gè)示例:

import html  # available only in Python 3.x def make_elements(name, value, **attrs):   keyvals = [' %s="%s"' % item for item in attrs.items()]   attr_str = ''.join(keyvals)   element = '<{name}{attrs}>{value}</{name}>'.format(       name = name,       attrs = attr_str,       value = html.escape(value))   return element make_elements('item', 'Albatross', size='large', quantity=6) make_elements('p', '<spam>') 

該程序的作用很簡(jiǎn)單,就是生成HTML標(biāo)簽,注意html這個(gè)模塊只能在Python 3.x才有。

起初我只是注意到,生成標(biāo)簽屬性列表的keyvals這個(gè)dictionary類型變量構(gòu)建的方式很有意思,兩個(gè)%s對(duì)應(yīng)一個(gè)item,所以就查閱了相關(guān)的資料,結(jié)果扯出了挺多的東西,在此一并總結(jié)。

注:下面所有Python解釋器使用的版本,2.x 對(duì)應(yīng)的是2.7.3,3.x 對(duì)應(yīng)的是3.4.1
在 Python 2.x 里,官方文檔里items的方法是這么說(shuō)明:生成一個(gè) (key, value) 對(duì)的list,就像下面這樣:

>>> d = {'size': 'large', 'quantity': 6} >>> d.items() [('quantity', 6), ('size', 'large')] 

在搜索的過(guò)程中,無(wú)意看到stackoverflow上這樣一個(gè)問(wèn)題:dict.items()和dict.iteritems()有什么區(qū)別? ,第一個(gè)答案大致的意思是這樣的:

“起初 items() 就是返回一個(gè)像上面那樣的包含dict所有元素的list,但是由于這樣太浪費(fèi)內(nèi)存,所以后來(lái)就加入了(注:在Python 2.2開始出現(xiàn)的)iteritems(), iterkeys(), itervalues()這一組函數(shù),用于返回一個(gè) iterator 來(lái)節(jié)省內(nèi)存,但是在 3.x 里items() 本身就返回這樣的 iterator,所以在 3.x 里items() 的行為和 2.x 的 iteritems() 行為一致,iteritems()這一組函數(shù)就廢除了。”

不過(guò)更加有意思的是,這個(gè)答案雖然被采納,下面的評(píng)論卻指出,這種說(shuō)法并不準(zhǔn)確,在 3.x 里 items() 的行為和 2.x 的 iteritems() 不一樣,它實(shí)際上返回的是一個(gè)"full sequence-protocol object",這個(gè)對(duì)象能夠反映出 dict 的變化,后來(lái)在 Python 2.7 里面也加入了另外一個(gè)函數(shù) viewitems() 和 3.x 的這種行為保持一致
為了證實(shí)評(píng)論中的說(shuō)法,我做了下面的測(cè)試,注意觀察測(cè)試中使用的Python版本:

測(cè)試1(Python 2.7.3):

Python 2.7.3 (default, Feb 27 2014, 19:58:35)  [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> d = {'size': 'large', 'quantity': 6} >>> il = d.items() >>> it = d.iteritems() >>> vi = d.viewitems() >>> il [('quantity', 6), ('size', 'large')] >>> it <dictionary-itemiterator object at 0x7fe555159f18> >>> vi dict_items([('quantity', 6), ('size', 'large')])             
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 马山县| 西宁市| 西盟| 合川市| 平顶山市| 昭苏县| 平陆县| 高邮市| 天等县| 绵阳市| 遵义县| 秭归县| 晋江市| 定远县| 合作市| 佛冈县| 额尔古纳市| 兴海县| 固阳县| 廉江市| 瓦房店市| 明溪县| 广南县| 湟源县| 营山县| 盐边县| 双牌县| 巴马| 万荣县| 凤山市| 马山县| 井陉县| 中山市| 香港| 成安县| 始兴县| 昭平县| 天峨县| 深圳市| 华池县| 原平市|