在python数组中存储多个值?

时间:2016-03-23 11:58:06

标签: python arrays multidimensional-array

我想在python数组中存储多个值(我也对任何其他数据结构开放)。

例如:

array[1][2][3] = 1  # (this is what I am able to do now)

但后来我也得到了值2,现在不是使用相同的索引将其存储在另一个数组中,我希望能够做到这一点:

array[1][2][3] = 1,2 

但我不希望像字符串一样连接现有结果,并将字符串拆分以获取各个值。

有没有办法在不必向数组引入另一个维度的情况下这样做?

编辑:我想要一种更简洁的方法来在同一个单元格中存储2个值。

由于

4 个答案:

答案 0 :(得分:2)

我会使用defaultdict:

from collections import defaultdict
array = defaultdict(list)
array[(1,2,3)].append(1)
array[(1,2,3)].append(2)

现在位置(1,2,3)的数组是一个包含1和2的列表

答案 1 :(得分:2)

如果理解正确,您可以在[{1}}而不是单个值中存储您需要的新list个新内容:

array[1][2][3]

答案 2 :(得分:1)

如果您事先了解所有内容,则可以使用元组。在这里,我将创建一对数字(n, n+1)并将它们存储在一个列表中:

>>> l = [(n,n+1) for n in xrange(0,4)]
>>> l
[(0, 1), (1, 2), (2, 3), (3, 4)]

如果您决定要追加其他值,则可以。假设您要将3附加到元组(1,2)

>>> l[1] = l[1] + (3,)
>>> l
[(0, 1), (1, 2, 3), (2, 3), (3, 4)]

元组是不可变的,因此它们比构造列表更快,但是你无法对实例化的元组进行更改 - 你必须替换它。如果您确定您的数据不会发生变化,请使用元组。如果它(并且经常)使用列表。

修改

如果您想要元组中的值,可以执行以下操作:

>>> tup = l[0]
>>> tup 
(0, 1)
>>> x, y = tup
>>> x
0
>>> y
1
>>> t, u = l[2] # alternatively
>>> t
2
>>> u
3

答案 3 :(得分:1)

  

array [1] [2] [3] = 1,2

好像你想在数组[1] [2] [3]中有一个列表,你可以用它来实现

array[1][2][3] = []
array[1][2][3].append(1)
array[1][2][3].extend([2])

或者,正如其他人已经提到的

的变化
array[1][2][3] = (1,2)

请注意,使用t-uples也是可能的

{{1}}

但在这种情况下,您无法扩展您的"列表"也不修改其内容(T-uples确实是不变的数组,无论是大小还是内容。)。

  

有没有办法做到这一点,而不必介绍另一个   数组的维度?

嗯......这个要求似乎与你以前的要求相当对立。

  

array [1] [2] [3] = 1,2

建议您能够区分"数组[1] [2] [3] [0]和#34; (= 1)和"数组[1] [2] [3] [1]" (= 2)。所以,除非我不理解你的问题,否则简短的回答是" no" :)