2016-03-23 156 views
0

我想在一個python數組中存儲多於一個值(我也對任何其他數據結構開放)。在python數組中存儲多個值?

例如:

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

但後來我還獲得了價值2,現在不是使用相同的索引存放在另一個數組,我希望能夠做到這一點:

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

但我不想連接像字符串中的現有結果,並拆分字符串以獲取單個值。

有沒有辦法做到這一點,而不必向數組中引入另一個維度?

編輯:我想要一個整潔的方式來存儲2個值在同一個單元格中。

感謝

+2

呃..我不明白你想要做什麼。你知道元組嗎?將RHS包裹在parens中。 – erip

+0

你現在在做什麼錯? – Bahrom

+0

Python沒有數組。這是他的名單,名單清單,和(如你在這裏)清單名單。當然,它可以有列表清單。 –

回答

1

如果你知道所有的列表先驗內容您可以使用元組。如果你決定要追加另一個值,可以

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

:在這裏,我將創建數字對(n, n+1)的,並將它們存儲在列表中。假設要追加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 
+1

我將如何檢索元組的個別值? – LoveMeow

+0

@LoveMeow將編輯顯示。 – erip

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

+0

矯枉過正。你不需要字典。 – erip

+0

我將如何檢索單個值? – LoveMeow

+1

只需數組[[1,2,3]]。這會給你你的價值觀作爲一個列表。例如:result = array [(1,2,3)] – Schore

2

如果理解正確的話,你可以將新list存儲與你在array[1][2][3],而不是單個值需要值:

array[1][2][3] = [1] # instead of = 1 

array[1][2][3].append(2) # now it's [1, 2] 

array[1][2][3].extend([3,4]) # now it's [1, 2, 3, 4] 

all_values = array[1][2][3] # no another dimensions uses to get values 
1

陣列[1] [2] [3] = 1,2

好像你想在陣列的列表[1] [2] [3],這你實際上可以與

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

或備選地做,如已經被別人使用的

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

心靈的事實,使用T-uples的也可以

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

但在這CAS e,您將無法擴展您的「列表」,也無法修改其內容(t-uples確實是恆定數組,大小和內容都是如此)。

有沒有辦法做到這一點,而不必引入另一個 尺寸的數組?

那麼......這個要求似乎與你以前的一個相當拮抗。

陣列[1] [2] [3] = 1,2

表明,您的能夠區分 「陣列[1] [2] [3] [0]」( = 1)和「數組[1] [2] [3] [1]」(= 2)。所以,除非我不明白你的問題,簡短的回答是「不」:)