gpt4 book ai didi

python - 如何在Python中对多个字典进行线性组合?

转载 作者:行者123 更新时间:2023-12-01 00:19:23 24 4
gpt4 key购买 nike

这里有一些代码来获取两个字典的线性组合:

def linearcombination(a1,d1,a2,d2):
return {k:a1*d1.get(k,0)+a2*d2.get(k,0) for k in {**d1,**d2}.keys()}


choosy1={"a":1,"b":2,"c":3}
choosy2={"a":1,"d":1}
choosy=linearcombination(1,choosy1,10,choosy2)

挑剔的是:

{'a': 11, 'c': 3, 'd': 10, 'b': 2}

如何概括它以允许任意数量的字典的线性组合?

最佳答案

在一组键的字典理解中使用 sum 的解决方案:

from itertools import chain

def linear_combination_of_dicts(dicts, weights):
return {
k: sum( w * d.get(k, 0) for d, w in zip(dicts, weights) )
for k in set(chain.from_iterable(dicts))
}

示例:

>>> dicts = [{'a': 1, 'b': 2, 'c': 3}, {'a': 1, 'd': 1}]
>>> weights = [1, 10]
>>> linear_combination_of_dicts(dicts, weights)
{'c': 3, 'd': 10, 'a': 11, 'b': 2}

关于python - 如何在Python中对多个字典进行线性组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59056339/

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