Python的dict类型迭代性能的优化(items()与iteritems()、keys()与iterkeys()、values()与itervalues()的区别)

#coding=utf-8

'''
演示dict的items()与iteritems()的区别
从演示结果可以看出iteritems()对于大的dict性能方面是有很大的提升的
拥有10**4个item的dict就应该使用iteritems(),而不是items()。

同理对keys()、iterkeys()、values()、itervalues()也是适用的
'''
import time

if __name__=='__main__':
	# n个数量级,如果你电脑性能足够好,完全可以把n值设置得更大些
	n = 8

	width = 16
	align = '<'
	print "{0:{align}{width}}{1:{align}{width}}{2:{align}{width}}".format('', 'items()', 'iteritems()', width=width, align=align)

	for i in range(n):
		tDict = {}.fromkeys(range(10**i))
		# normal,使用items
		nStart = time.time()
		for j in tDict.items():	
			pass
		nEnd = time.time()
		# iter,使用iteritems
		iStart = time.time()
		for j in tDict.iteritems():
			pass
		iEnd = time.time()

		print "{0:{align}{width}}{1:{align}{width}.4f}{2:{align}{width}.4f}".format(i, nEnd-nStart, iEnd-iStart, width=width, align=align)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值