我們已經(jīng)了解了dict對象本身就是可迭代對象挑辆,用 for 循環(huán)直接迭代 dict,可以每次拿到dict的一個key撒轮。
如果我們希望迭代 dict 對象的value汹来,應(yīng)該怎么做?
dict 對象有一個values() 方法页畦,這個方法把dict轉(zhuǎn)換成一個包含所有value的list胖替,這樣,我們迭代的就是 dict的每一個 value:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }print d.values()# [85, 95, 59]forvind.values():print v# 85# 95# 59
如果仔細(xì)閱讀Python的文檔,還可以發(fā)現(xiàn)独令,dict除了values()方法外端朵,還有一個itervalues()方法,用itervalues()方法替代values()方法燃箭,迭代效果完全一樣:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }print d.itervalues()# forvind.itervalues():print v# 85# 95# 59
那這兩個方法有何不同之處呢冲呢?
1.values()方法實際上把一個 dict 轉(zhuǎn)換成了包含 value 的list。
2. 但是itervalues()方法不會轉(zhuǎn)換招狸,它會在迭代過程中依次從 dict 中取出 value敬拓,所以 itervalues() 方法比 values() 方法節(jié)省了生成 list 所需的內(nèi)存。
3.?打印 itervalues() 發(fā)現(xiàn)它返回一個 對象裙戏,這說明在Python中乘凸,for 循環(huán)可作用的迭代對象遠(yuǎn)不止 list,tuple累榜,str营勤,unicode,dict等壹罚,任何可迭代對象都可以作用于for循環(huán)葛作,而內(nèi)部如何迭代我們通常并不用關(guān)心。
如果一個對象說自己可迭代渔嚷,那我們就直接用 for 循環(huán)去迭代它进鸠,可見,迭代是一種抽象的數(shù)據(jù)操作形病,它不對迭代對象內(nèi)部的數(shù)據(jù)有任何要求。