如何合并两个数组和按组分组?
示例:
my_list = [3, 4, 5, 6, 4, 6, 8]
keys = [1, 1, 2, 2, 3, 5, 7]
预期结果:
[[1, 3, 4], [2, 5, 6], [3, 4], [5, 6], [7, 8]]
答案 0 :(得分:0)
我认为您必须使用set()
自己编写它才能删除重复项,因此我制作了一个名为merge_group
的函数
my_list = [3, 4, 5, 6, 4, 6, 8]
keys = [1, 1, 2, 2, 3, 5, 7]
def merge_group(input_list : list, input_key : list):
result = []
i = 0
while i < len(my_list):
result.append([my_list[i], keys[i]])
i += 1
j = 0
while j < len(result):
if j+1 < len(result):
check_sum = result[j] + result[j+1]
check_sum_set = list(set(check_sum))
if len(check_sum) != len(check_sum_set):
result[j] = check_sum_set
j += 1
return result
print(merge_group(my_list, keys))
答案 1 :(得分:0)
如果我理解正确,键列表将映射到值列表。您可以使用zip
函数同时遍历两个列表。在这种情况下很方便。还要检查漂亮的defaultdict
功能-我们可以使用它来填充列表,而无需显式初始化它。
from collections import defaultdict
result = defaultdict(list) # a dictionary which by default returns a list
for key, val in zip(keys, my_list):
result[key].append(val)
result
# {1: [3, 4], 2: [5, 6], 3: [4], 5: [6], 7: [8]}
您可以使用以下方法转到列表(但不确定为什么要这么做)
final = []
for key, val in result.items():
final.append([key] + val) # add key back to the list of values
final
# [[1, 3, 4], [2, 5, 6], [3, 4], [5, 6], [7, 8]]