我想定义一个函数,它采用不同的长度list
,然后对list
中的每个元素(字典)执行for
循环。你知道吗
为了使它更具体,我提供了3个实例,具体说明了我要实现的目标:
# preparation: create a dict to hold the data
result = dict()
for event in target.outcomes:
result[event] = 0
#### Instance 1.
parent_list = [parent0,parent3] # element of the list is dict
for key0,value0 in parent0.items():
for key1, value1 in parent3.items():
for t_key, t_value in target.pmfs[(key0,key1)].items(): # current node
result[t_key] += t_value*value0*value1
#### Instance 2.
parent_list = [parent0] # element of the list is a dict
for key0, value0 in parent0.items():
for t_key, t_value in target.pmfs[(key0,)].items(): # current node
result[t_key] += t_value*value0
#### Instance 3.
parent_list = [] # element of the list is a dict
for t_key, t_value in target.pmfs[()].items(): # current node
result[t_key] += t_value
所需结构:
def(target, parent):
result = dict()
for event in target.outcomes:
result[event] = 0
...
return result
您可以使用
itertools.product
而不是嵌套的for循环来生成dict
s和functool.reduce
的元组来乘以dict的值虚拟数据生成
虚拟mpfs
链锯
链式乘法,从this SO answer
实际解决方案
如果你让
result
成为defaultdict
,那么你就不必像你一样在一开始就初始化它结果
案例1
案例2
案例3
您需要用
target.mpfs()
验证这一点相关问题 更多 >
编程相关推荐