首页 > 解决方案 > 如何按键合并两个数组和分组?

问题描述

如何按键合并两个数组和分组?

例子:

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]]

标签: python-3.x

解决方案


如果我理解正确,键列表映射到值列表。您可以使用该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]]

推荐阅读