设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 736|回复: 0

[经验分享] Python 字典的遍历

[复制链接]

尚未签到

发表于 2017-5-1 09:06:16 | 显示全部楼层 |阅读模式
# encoding: utf-8
test_dict = {  
'attack': 379,  
'attack_growth': 16.8,  
'bp_size': 80,  
'critical_rate': 0.15,  
'ctype': '2',  
'defense': 155,  
'defense_growth': 8.25,  
'exp_type': 'c',  
'fate_id': ['ch_10004', 'ch_10005', 'ch_10006', 'ch_20003', 'ch_20004'],  
'hp': 1861,  
'hp_growth': 69.6,  
'max_talent_lv': 7,  
'name': 'caocao',  
'pvp_skill_rate': 1,  
'recover': 281,  
'recover_growth': 11.8,  
'souls_needed': 30,  
'star': '5',  
'talent_lv': 0,  
'who_is': 'caocao',  
}  
# 不同的遍历方法
def test1():
for key in test_dict:   # 这种最快, 其实也很显而易见
pass
def test2():
for key in test_dict.keys():  
pass
def test3():
for key, value in test_dict.items():  
pass
if __name__ == '__main__':  
from timeit import Timer  
t1 = Timer("test1()", "from __main__ import test1")  
t2 = Timer("test2()", "from __main__ import test2")  
t3 = Timer("test3()", "from __main__ import test3")
# 执行100,000次的时间  
print t1.timeit(100000)  
print t2.timeit(100000)  
print t3.timeit(100000)
# 3次执行100,000次的时间  
print t1.repeat(3, 100000)  
print t2.repeat(3, 100000)  
print t3.repeat(3, 100000)
  结果:
  0.0656280517578
0.0932841300964
0.217456817627
[0.06363296508789062, 0.062133073806762695, 0.0649728775024414]
[0.08316302299499512, 0.08275103569030762, 0.08605194091796875]
[0.21467804908752441, 0.19786405563354492, 0.20139288902282715]
   但空的循环没有意义

# encoding: utf-8
test_dict = {   
'attack': 379,   
'attack_growth': 16.8,   
'bp_size': 80,   
'critical_rate': 0.15,   
'ctype': '2',   
'defense': 155,   
'defense_growth': 8.25,   
'exp_type': 'c',   
'fate_id': ['ch_10004', 'ch_10005', 'ch_10006', 'ch_20003', 'ch_20004'],   
'hp': 1861,   
'hp_growth': 69.6,   
'max_talent_lv': 7,   
'name': 'caocao',   
'pvp_skill_rate': 1,   
'recover': 281,   
'recover_growth': 11.8,   
'souls_needed': 30,   
'star': '5',   
'talent_lv': 0,   
'who_is': 'caocao',   
}   
# 不同的遍历方法  
def test1():
data = {}
for key in test_dict:
data[key] =  test_dict[key]
return data
def test2():  
data = {}
for key in test_dict.keys():
data[key] =  test_dict[key]   
return data  
def test3():
data = {}
for key, value in test_dict.items():   
data[key] = value
return data
print test1()
print test2()
print test3()
if __name__ == '__main__':   
from timeit import Timer   
t1 = Timer("test1()", "from __main__ import test1")   
t2 = Timer("test2()", "from __main__ import test2")   
t3 = Timer("test3()", "from __main__ import test3")  
# 执行100,000次的时间   
print t1.timeit(100000)   
print t2.timeit(100000)   
print t3.timeit(100000)  
# 3次执行100,000次的时间   
print t1.repeat(3, 100000)   
print t2.repeat(3, 100000)   
print t3.repeat(3, 100000)

   
  结果:
  0.39611697197
0.423596143723
0.477458953857
[0.41298508644104004, 0.3765869140625, 0.3731379508972168]
[0.4185318946838379, 0.42104601860046387, 0.4249718189239502]
[0.42894506454467773, 0.4049968719482422, 0.3907771110534668]
  差别没那么明显, 不同的遍历在不同地方处理数据

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371476-1-1.html 上篇帖子: Python Django工作原理 下篇帖子: python入门 读写文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表