我想在python数组中存储多个值(我也对任何其他数据结构开放)。
例如:
array[1][2][3] = 1 # (this is what I am able to do now)
但后来我也得到了值2,现在不是使用相同的索引将其存储在另一个数组中,我希望能够做到这一点:
array[1][2][3] = 1,2
但我不希望像字符串一样连接现有结果,并将字符串拆分以获取各个值。
有没有办法在不必向数组引入另一个维度的情况下这样做?
编辑:我想要一种更简洁的方法来在同一个单元格中存储2个值。
由于
答案 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" :)