基于列python拆分表(或列表)

时间:2017-05-09 10:10:40

标签: python sorting

我有一个数组

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

我需要根据第一个数组值来调整它,即基于'a'或'b'。所以预期的产出是

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

我该怎么做?

请帮助我纠正这个问题,如果我使用像list和array这样的单词的方式可能会造成混淆

2 个答案:

答案 0 :(得分: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]})

答案 1 :(得分: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])