gpt4 book ai didi

python - 如何使用特定的数据结构作为 defaultdict 的 default_factory?

转载 作者:太空狗 更新时间:2023-10-29 22:21:58 27 4
gpt4 key购买 nike

我目前正在使用 Counterdefaultdict 来唯一地计算不可预测键的几个不可预测值:

from collections import defaultdict, Counter

d = defaultdict(Counter)
d['x']['b'] += 1
d['x']['c'] += 1
print(d)

这给了我预期的结果:

defaultdict(<class 'collections.Counter'>, {'x': Counter({'c': 1, 'b': 1})})

我现在需要扩展 defaultdict 中值的结构,并使其成为具有两个键的 dict:前面的 Counter 和一个 str:

mystruct = {
'counter': collections.Counter(),
'name': ''
}

defaultdict 中的default_factory 是否可以使用特定的数据结构(如上)?预期的结果是,对于 defaultdict 中的每个不存在的键,将创建一个使用上述结构初始化的新键和值。

最佳答案

你只需要将你的 default_factory 定义为一个返回你想要默认的字典的函数:

from collections import defaultdict, Counter
d = defaultdict(lambda: {'counter': Counter(), 'name': ''})
d['x']['counter']['b'] += 1
d['x']['counter']['c'] += 1
print(d)

如果您不熟悉 lambda,这与:

def my_factory():
aDict = {'counter': Counter(), 'name':''}
return aDict
d = defaultdict(my_factory)

关于python - 如何使用特定的数据结构作为 defaultdict 的 default_factory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31723719/

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