2017-05-09 61 views
-1

一個表(或列表)我有一個陣列分裂基於列蟒

arr = [['a', 'b', 'a'], [1, 2, 3] 

我需要這基於所述第一數組的值即基於「A」或「B」被spliited。所以預期的產出是

arr_out_a = [1, 3] 
arr_out_b = [2] 

我該怎麼做?

請幫我糾正的問題,如果這樣我用的話就像列表和數組可能會造成混亂

+2

首先嚐試編輯您的問題,以便更清楚您需要什麼幫助。第二,向我們展示你已經嘗試過的東西。 – geostocker

回答

3

使用collections.defaultdict()

In [82]: arr = [['a', 'b', 'a'], [1, 2, 3]] 

In [83]: from collections import defaultdict 

In [84]: d = defaultdict(list) 

In [85]: for i, j in zip(*arr): 
    ....:  d[i].append(j) 
    ....:  

In [86]: d 
Out[86]: defaultdict(<class 'list'>, {'b': [2], 'a': [1, 3]}) 
+0

如果數組是arr = [['x','y','z'],['a','b','a'],[1,2,3]],我將如何分割在'a'或'b'上。預期的輸出是arr_out_a = [['x',1],['z',3]和arr_out_b = [['y',2] –

+0

感謝您的快速回答。如果數組是arr = [['x','y','z'],['a','b','a'],[1,2,3]],我將如何分割'a'或'b'。預期的輸出是arr_out_a = [['x',1],['z',3]和arr_out_b = [['y',2]。請幫助一般方式作爲第一個答案,在我的程序中,我想根據一些字符串而不是a和b來分割,並且這樣的字符串的數量是未知的(即由組合確定 –

+0

嗨,我可以試試這個和 導入運算符 arr = [['x','y','z'],['a','b','a'],[1,2,3]] 集合導入defaultdict d = defaultdict(列表) 對於i,J,K在拉鍊(* ARR): d [j]的.append([I,K]) 打印d 結果: defaultdict (,{'a':[['x',1],['z', 3]],'b':[['y',2]]}) –

0

基本上只是追加他們有條件預定義的空列表:

arr_out_a = [] 
arr_out_b = [] 
for char, num in zip(*arr): 
    if char == 'a': 
     arr_out_a.append(num) 
    else: 
     arr_out_b.append(num) 

,或者如果你不喜歡zip

arr_out_a = [] 
arr_out_b = [] 
for idx in range(len(arr[0])): 
    if arr[0][idx] == 'a': 
     arr_out_a.append(arr[1][idx]) 
    else: 
     arr_out_b.append(arr[1][idx])