datetime 比较_Python 字典中key命中取值的两种方法性能比较!

 2023-09-07 阅读 29 评论 0

摘要:起步从字典中取值有两个方法,一个是先判断key是否在字典中再取值;另一个是包裹try块中直接去取值:Python资源共享群:484031800def use_in(d, key):if key in d:return d[key]return None def use_try(d, key):try:return d[key]except KeyError:p

起步

从字典中取值有两个方法,一个是先判断key是否在字典中再取值;另一个是包裹try块中直接去取值:

Python资源共享群:484031800

def use_in(d, key):if key in d:return d[key]return None
def use_try(d, key):try:return d[key]except KeyError:passreturn None

python如何遍历字典中的key和value,性能比较

用 timeit 模块来查看它们的运行时间,测试环境 win10 + python3.6.8:

import timeit
def use_in(d, key):if key in d:return d[key]return None
def use_try(d, key):try:return d[key]except KeyError:passreturn None
cache = {}
for i in range(100):cache[i] = True
perf_dict = {'in: hit': min(timeit.repeat(lambda: use_in(cache, 50))),'in:not hit': min(timeit.repeat(lambda: use_in(cache, 150))),'try: hit': min(timeit.repeat(lambda: use_try(cache, 50))),'try:not hit': min(timeit.repeat(lambda: use_try(cache, 150))),
}
print(perf_dict)

得到结果:

{'in: hit': 0.32121160000000004, 'in:not hit': 0.2666487000000002, 'try: hit': 0.27908409999999995, 'try:not hit': 0.5742989999999999
}

好像用 try 的方式的快一些,但当不命中的时候几乎慢了一倍多。所以平均下来这两个方法性能其实没啥区别。

python中datetime函数的用法。标准库里会用哪种方法呢

比较好奇标准库中会用哪种方法呢?

in先判断的方式

argparse 模块中:

python中datetime用法?

60d2b0c71615c3930258bba715b1258e.png

linecache 模块:

df70d2c957ebfebe32e6982310ff5083.png

dummy_threading 模块:

ca7972a09fe85c1029617d508836bdaa.png

try块的方式

re 模块中的 _compile 中:

f687947361d4ac3142953a63a0aea309.png

string 模块中:

1c11e5ef492fc998399be80cc08c97d6.png

datetime 模块中:

7a0ca140830301e39abf1e6dd7b9d472.png

functools 模块中:

daf2af0f33b88b0cf31f96110fc59d0c.png

copy 模块:

0383b1f2ceeebacf872387c170562ff5.png

threading 模块:

ee02200917e4dcb418aab8aceb1fc6cb.png

更多的就不举例了,可以看到,在标准库里大多还是使用 try 块的方式。然后是一些不常用或者比较“新”的模块才用 in 判断方式。可能是早先前的字典不支持 in 操作吧。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/17181.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息