gpt4 book ai didi

python - 使用 infinite_defaultdict 的代价

转载 作者:太空狗 更新时间:2023-10-30 01:34:12 25 4
gpt4 key购买 nike

这是给我的天堂:

>>> from collections import defaultdict
>>> infinite_defaultdict = lambda: defaultdict(infinite_defaultdict)
>>> d = infinite_defaultdict()
>>> d['x']['y']['z'] = 10

来自Raymond Hettinger on Twitter

有了这个我不明白为什么我们应该再做这些了:

mydict = defaultdict(list)
mydict = defaultdict(lambda: defaultdict(float))

等....

但我可能是错的。是否存在您想避免 infinite_defaultdict 的情况?

更新:我试着对标时间

from collections import defaultdict

def infdd():
infinite_defaultdict = lambda: defaultdict(infinite_defaultdict)
idd = infinite_defaultdict()
idd['x'] = [1,2,3]

def plaindd():
ddl = defaultdict(list)
ddl['x'] = [1,2,3]

if __name__ == '__main__':
import timeit
print "Infd = %.3f" % (timeit.timeit("infdd()",setup="from __main__ import infdd"))
print "Plaind = %.3f" % (timeit.timeit("plaindd()",setup="from __main__ import plaindd"))

显然 infinite_dict 几乎比正常情况慢两倍:

Infd = 0.632
Paind = 0.387

最佳答案

如果您需要默认值不是字典,那么您不应该使用 infinite_defaultdict。例如,如果您想要对项目进行计数或累积项目数组,您会希望默认值为数字或数组。

def group_by(key, items):
result = defaultdict(list)
for item in items:
result[key(item)].append(item)
return result

group_by(len, ['here', 'are', 'some', 'words'])
# -> { 3: ['are'] 4: ['here', 'some'], 5: ['words'] }

关于python - 使用 infinite_defaultdict 的代价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680866/

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