我现在有三个输入,
combs_dict = {frozenset({'time'}): '0', frozenset({'rfid'}): '0', frozenset({'rfid', 'time'}): '0', frozenset({'zone', 'rfid'}): '0', frozenset(): '0', frozenset({'zone', 'time'}): '0', frozenset({'zone'}): '0'}
prob_dict = {'2': '0.5', '4': '0.05', '3': '0.3', '1': '0.15'}
map_dict = {'2': {frozenset({'rfid', 'time'}), frozenset({'zone', 'time'})}, '4': {frozenset({'rfid', 'zone'})}, '1': {frozenset({'zone', 'time'})}, '3': {frozenset({'rfid', 'time'}), frozenset({'rfid', 'zone'})}}
我正在尝试将 combs_dict 与 map_dict 进行比较。如果combs_dict 中的任何键是map_dict 值中任何元素的超集(> =),那么我必须将该键的相应概率从prob_dict 添加到combs_dict 的值。
例如,如果我从 combs_dict 获取 freezeset({'rfid', 'time'}) 并与 map_dict 中的值进行比较,发现它是这个 {'2': {frozenset({'rfid', ' time'})、frozenset({'zone', 'time'})} 和 this '3': {frozenset({'rfid', 'time'}),因为它们都有其等价物或子集。我将不得不从 prob_dict 中获取其密钥 2 和 3 的概率,并将其与 combs_dict 中的值相加,如下所示 (frozenset({'rfid', 'time'}): '0'+'0.5+'0.05' )。
我现在尝试的是这个,
for k,v in combs.items():
for ky,values in map_output.items():
if any(k>=l for l in values):
v = v + (j for i,j in prob.items() if i == ky)
但我无法在“v”中添加概率,因为 j 作为生成器返回。有人可以帮忙吗。是否有任何选项可以使用多处理并行化?因为我将在 comb_dict 中拥有近 50k 冻结集,所以我必须将每个冻结集与 map_ouput 中的每个元素进行比较。
如果有任何不清楚的地方,请告诉我。我会解释。