我有以下数组:
[
["String 0", [1, 2]],
["String 1", [1, 3]],
["String 2", []],
["String 3", [2]],
["String 1", [1, 2]],
["String 2", [0]]
]
我需要将其转换为具有唯一字符串(第一列)和连接第二列的数组。
以下是输出结果:
[
["String 0", [1, 2]],
["String 1", [1, 3, 1, 2]],
["String 2", [0]],
["String 3", [2]]
]
在这种情况下,字符串是唯一的,"String 1"
有第二列"1, 3, 1, 2"
而"String 2"
有第二列"0"
。
我知道如何使数组唯一,但不知道如何同时进行分组和连接。
答案 0 :(得分:1)
就像IanAuld建议的那样,字典可能是解决这个问题的最好方法。
尝试以下
arr_of_arrs = [
["String 0", [1, 2]],
["String 1", [1, 3]],
["String 2", []],
["String 3", [2]],
["String 1", [1, 2]],
["String 2", [0]]
]
from collections import defaultdict
arrs = defaultdict(lambda: [])
for arr in arr_of_arrs:
arrs[arr[0]] += arr[1]
如何将字典转换回数组数组作为练习。
答案 1 :(得分:0)
这将符合您要求的输出:
l = [
["String 0", [1, 2]],
["String 1", [1, 3]],
["String 2", []],
["String 3", [2]],
["String 1", [1, 2]],
["String 2", [0]]
]
unique = {x[0] for x in l}
new_arr = [[x,[]] for x in unique]
for k in l:
for n in new_arr:
if k[0] == n[0]:
n[1] += k[1]
In [5]: new_arr
Out[5]:
[['String 3', [2]],
['String 2', [0]],
['String 1', [1, 3, 1, 2]],
['String 0', [1, 2]]]