gpt4 book ai didi

python - 更新字典整数成员时避免双重查找

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:51 25 4
gpt4 key购买 nike

如果字典包含您可以引用的内容,您可以通过一次字典查找来默认或更新它:

d.setdefault('k', []).append(2)

但是,如果它们是数字,则不可能以相同的方式修改字典条目:

d.setdefault('k', 0) += 1  # doesn't work

相反,您需要进行两次字典查找,一次用于读取,一次用于写入:

d['a'] = d.get('a', 0) + 1

对于具有大量键的字典来说,这似乎不是一个好主意。那么,有没有办法对包含数字的字典执行默认或更新操作?或者,换句话说,对此类词典应用默认或更新操作的最高效方法是什么?

最佳答案

快速测试表明 collections.defaultdict比你的双重查找快 2.5 倍(在 Python 2.6 上测试):

>>> import timeit
>>> s1 = "d = dict((str(n), 0) for n in range(1000000))"
>>> timeit.repeat("d['a'] = d.get('a', 0) + 1", setup=s1)
[0.17711305618286133, 0.17411494255065918, 0.17812514305114746]
>>> s2 = """
... from collections import defaultdict
... d = defaultdict(int, ((str(n), 0) for n in range(1000000)))
... """
>>> timeit.repeat("d['a'] += 1", setup=s2)
[0.07185506820678711, 0.07294416427612305, 0.12155508995056152]

关于python - 更新字典整数成员时避免双重查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25675520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com