2017-05-09 41 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])