您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python dict:获取vs setdefault

python dict:获取vs setdefault

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

两者之间的区别基本上是手动设置d[key]为每次指向列表,而不是仅在未设置时才setdefault自动设置d[key]为列表。

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

from timeit import timeit

print 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.794723378711
0.811882272256
0.724429205999
0.722129751973

因此setdefaultget为此目的快10%。

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

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

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

python 2022/1/1 18:43:43 有285人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶