栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python dict:获取vs setdefault

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python dict:获取vs setdefault

你的两个例子做同样的事情,但并不意味着

get
setdefault
做。

两者之间的区别基本上是手动设置

d[key]
为每次指向列表,而不是仅在未设置时才
setdefault
自动设置
d[key]
为列表。

我使这两种方法尽可能相似

from timeit import timeitprint timeit("c = d.get(0, []); c.extend([1]); d[0] = c", "d = {1: []}", number = 1000000)print timeit("c = d.get(1, []); c.extend([1]); d[0] = c", "d = {1: []}", number = 1000000)print timeit("d.setdefault(0, []).extend([1])", "d = {1: []}", number = 1000000)print timeit("d.setdefault(1, []).extend([1])", "d = {1: []}", number = 1000000)

并得到

0.7947233787110.8118822722560.7244292059990.722129751973

因此

setdefault
get
为此目的快10%。

get
方法可以使您做的事 少于
使用
setdefault
KeyError
即使您不想设置密钥,也可以使用它来避免在密钥不存在时得到提示(如果那会经常发生)。

请参阅“ setdefault”的dict方法的用例,并且dict.get()方法返回一个指针,以获取有关这两种方法的更多信息。

关于主题的

setdefault
结论是,大多数情况下,您想使用
defaultdict
。关于该线程的
get
结论是它很慢,通常最好(在速度方面)使用defaultdict或处理错误(取决于字典的大小和您的用例)进行双重查找。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号