根据两个不同的数组创建一个二维数组。

3

我接收到不断的数据,为了方便起见,我将接收到的两个数据值分别放入不同的数组中,这样做的目的是将Variable2的值与Variable1的值联系起来。现在,Variable1的值始终在0和7之间,我希望使用此值作为索引,从包含所有Variable2值的另一个数组中获取对应的数据。数据在for循环中被连续地轮询,因此我不断地获取两个变量的数据。 以下是我收到的数据示例:

Variable1:  6 Variable2:  1499.6
Variable1:  6 Variable2:  1186.5
Variable1:  6 Variable2:  570.4
Variable1:  1 Variable2:  405.9
Variable1:  1 Variable2:  754.0
Variable1:  1 Variable2:  197.2
Variable1:  1 Variable2:  726.0
Variable1:  1 Variable2:  959.1
Variable1:  1 Variable2:  709.6

下面是变量1和变量2的两个数据数组示例:
  Variable2 ={  [1499.6, 1186.5, 570.4, 405.9, 754.0, 197.2, 726.0, 959.1, 709.6]}
  Variable1 ={  [[6], [6], [6], [1], [1], [1], [1], [1], [1]]}

我的问题是如何获取这两个数组并使其实现以下效果:如果我执行 print(VariableArray[6][2]),它会打印出570.4,也就是 Variable1 = 6 对应的第三个 variable2。

1个回答

4

我会选择一个列表字典:

{
    6: [1499.6, 1186.5, 570.4],
    1: [405.9, 754.0, 197.2, 726.0, 959.1, 709.6]
}

作为Python REPL中的一个示例:
>>> d = {6: [1499.6, 1186.5, 570.4], 1: [405.9, 754.0, 197.2, 726.0, 959.1, 709.6]}
>>> d[6][2]
570.4

这个想法是: 为你的0到7个值(最初为Variable1)保留一个密钥,并为每个值存储一个值列表,在其中推入新数据。
你可以像这样初始化这个字典:
d = {
    0: [],
    1: [],
    2: [],
    3: [],
    4: [],
    5: [],
    6: [],
    7: [],
}

或者你可以使用defaultdict,但首先,请确保您了解列表和字典。

为了将数据附加到列表中,假设42.0是您的新值,并且字典已包含您在问题中发布的数据,则可以执行以下操作:

d[6].append(42.0)

这将产生:

{6: [1499.6, 1186.5, 570.4, 42.0], 1: [405.9, 754.0, 197.2, 726.0, 959.1, 709.6]}

更一般地说:d [Variable1] .append(Variable2)

注意:确保您的列表不会无限增长。

请在此处阅读有关Python中字典和列表的常规理论和用法(为了更好的理解,最少阅读):


在代码中我该怎么做?我尝试使用字典的append方法,但它总是只保留每个键的最后一个值,所以在我的情况下,我最终会得到:{ 6:[670.4], 1:[709.6] } - Victor J Mytre
编辑了帖子以包含附加内容。 - Paul
谢谢,问题在于列表会不断增长,我在不断地构建这两个列表,在一定数量的数据点后,我将清空列表并在获取列表数据后创建两个新列表。如果我无法找到每个键的最低值,我可能会发布一个问题,因为我的想法是围绕一个包含100个元素的列表构建字典,选择每个键的最低值,创建一个新的8个元素的数组,其中索引位置等于字典的键,而值则是每个键的最低值。然后从0开始重新开始。谢谢! - Victor J Mytre
是的,最好单独发布那个问题。如果答案解决了这里发布的问题,请确保点击答案左侧的勾选标志图标。 - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接