首页 > 解决方案 > 哪个更有效 dict.get("1", "default val") 或者 if else 检查

问题描述

我有字典

my_dict  = {
        "1": "sss", "2": "dddd", "3": "ssss",
        "4": "ccc", "5": "aaa", "6": "ffff"
        }

就时间复杂度而言,哪个更有效?

myvar = my_dict.get("7", "default value")

或者

if "7" in  my_dict :
     myvar = my_dict["7"]
else:
    myvar = "default value"

它们不是都一样吗,因为在 dict.get 的实现中会有 if else 条件然后返回默认值?

标签: python

解决方案


这是两者的比较

d = {str(k): k**2 for k in range(10000)}
In[85]: def check(d):
   ...:     if '899' in d:
   ...:         return d['899']
   ...:     else:
   ...:         return "None"
   ...:     

n[86]: %timeit check(d)
102 ns ± 0.875 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In[87]: %timeit d.get('899', 'None')
62.1 ns ± 0.282 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

推荐阅读