python - 哪个更有效 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 条件然后返回默认值?
解决方案
这是两者的比较
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)
推荐阅读
- devise - 防止在 rails/devise 中没有邀请码的情况下登录
- python - 从现有的词典列表中制作新的词典列表?
- select - 在 SQL Server 中选择记录
- dart - 在加载 url 之前,如何使用缓存图像在颤动中显示?
- r - 年龄作为生存分析中的时间尺度
- google-api - 为什么我会得到非常不一致的 Google Geocode API 结果?
- csvhelper - 在 CsvHelper v7.1.1 中读取“未键入”的 CSV 文件
- c# - 如何根据单击的按钮在 div 中显示数据:C# MVC
- excel - 添加 7 个单元格中最好的 5 个的总和
- jquery - jQuery if 语句使用需要选择部分中的所有页面的 URL,但有例外