我有一个数组
arr = [['a', 'b', 'a'], [1, 2, 3]
我需要根据第一个数组值来调整它,即基于'a'或'b'。所以预期的产出是
arr_out_a = [1, 3]
arr_out_b = [2]
我该怎么做?
请帮助我纠正这个问题,如果我使用像list和array这样的单词的方式可能会造成混淆
答案 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])