1. 程式人生 > >為什麼用iteritems() 而不是 items()

為什麼用iteritems() 而不是 items()

3. 使用 iteritems() 迭代大資料

迭代大資料字典時,如果是使用 items() 方法,那麼在迭代之前,迭代器迭代前需要把資料完整地載入到記憶體,這種方式不僅處理非常慢而且浪費記憶體,下面程式碼約佔1.6G記憶體(為什麼是1.6G?可以參考:Python's underlying hash data structure for dictionaries


d = {i: i * 2 for i in xrange(10000000)}
for key, value in d.items():
    print("{0} = {1}".format(key, value))

而使用 iteritem() 方法替換 items() ,最終實現的效果一樣,但是消耗的記憶體降低50%,為什麼差距那麼大呢?因為 items() 返回的是一個 list,list 在迭代的時候會預先把所有的元素載入到記憶體,而 iteritem() 返回的一個迭代器(iterators),迭代器在迭代的時候,迭代元素逐個的生成。

d = {i: i * 2 for i in xrange(10000000)}
for key, value in d.iteritem():
    print("{0} = {1}".format(key, value))