根据其关联列表中的特定条件求和概率元素

2024-10-03 00:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有4个列表,其中2个有一对一的关联,我用另外两个来施加条件。A列表只是事物的列表,而B是与A中的每个元素相关联的“概率”列表。例如,A[A,B]中的第一个元素与B[0.12]中的第一个元素相关联

A=[[a, b], [c, f], [g, m], [h, j], [c, f], [g, m]]
B=[[0.12], [0.45], [0.98], [0.56], [0.34], [0.78]]

第三个和第四个列表(C,D)是fallows

C=[[c, f], [g, m]]
D=[[[a, b], [h, j]]

我想通过A迭代,找到A和C之间的所有公共元素,并将它们放入E中的嵌套列表中,对A和D执行相同的操作(并将它们放入E中的另一个列表中)。同样,将这些相关的概率汇总到F中的嵌套列表中。我算出的代码是fallows

E=[[ ], [ ]]
F=[[0], [0]]
for i in A:
    if i in C:
        E[0].append(i)
        F[0]= F[0]+ B[i]
for i in A:
    if i in D:
        E[1].append(i)
        F[1]= F[1]+B[i]

这给出了“索引必须是整数,而不是列表”的错误。我不确定问题到底是什么,或者是否有更好的总体方法来解决概率问题,但我非常感谢您的帮助/建议


Tags: 代码in元素列表forif错误整数
1条回答
网友
1楼 · 发布于 2024-10-03 00:24:10

在仔细阅读之后,我能够理解你想要做什么

您可以将其用于您的任务:

A=[['a', 'b'], ['c', 'f'], ['g', 'm'], ['h', 'j'], ['c', 'f'], ['g', 'm']]
B=[[0.12], [0.45], [0.98], [0.56], [0.34], [0.78]]

C=[['c', 'f'], ['g', 'm']]
D=[['a', 'b'], ['h', 'j']]

# E=[[ ], [ ]]
# F=[[0], [0]]

common_in_a_c = {'lists_found': [], 'probabilities': []}
common_in_a_d = {'lists_found': [], 'probabilities': []}

for i in range(len(A)):
    if A[i] in C:
        common_in_a_c['lists_found'].append(A[i])
        common_in_a_c['probabilities'].append(B[i][0])
    if A[i] in D:
        common_in_a_d['lists_found'].append(A[i])
        common_in_a_d['probabilities'].append(B[i][0])

print(common_in_a_c)
print(common_in_a_d)

我已经删除了您使用的EF。用更好的方法来存储你想要的东西-common_in_a_ccommon_in_a_d是字典-它会保存你感兴趣的值。 在这里,我将整个列表存储在common_in_a_c['probabilities']=>;您可以在其上执行sum()以获取sum of probabilities

代码中的问题是B[i]中使用的loop=>B[i]不起作用,因为i不是index而是elements in A。因此,我将逻辑更改为使用index-based-loop

相关问题 更多 >