【问题标题】:summing probability elements based on specific conditions from its associated list python根据相关列表python中的特定条件对概率元素求和
【发布时间】:2020-06-01 19:04:38
【问题描述】:

我有 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)是作为休闲,

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

我想遍历 A 以找到 A 和 C 之间的所有公共元素并将它们放入 E 中的嵌套列表中,并对 A 和 D 执行相同的操作(并将它们放入 E 中的另一个列表中)。同样,将相关概率总结到 F 中的嵌套列表中。我制定的代码是休闲的,

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]

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

【问题讨论】:

  • A A=[[a, b], [c, f], [g, m], [h, j], [c, f], [g, m]]A=[['a', 'b'], ['c', 'f'], ...] ??它像你在问题中显示的那样工作吗??
  • 为什么是 D 这个 - D=[[['a', 'b'], ['h', 'j']] ???您的问题中有 1 个额外的开括号 - 语法错误

标签: python list nested sum


【解决方案1】:

仔细阅读后,我能够理解您要做什么。

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

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

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

【讨论】:

    猜你喜欢
    • 2022-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多