首页 > 解决方案 > 组合两个多维数组

问题描述

在 Python 中有这两个数组:

a = [ ['a',1], ['b',2], ['c',3] ]
b = [ ['a',10], ['b',20], ['c',30], ['d',40] ]

是否可以像这样将它们组合成一个数组?

output = [ ['a',1,10], ['b',2,20], ['b',3,30], ['c',0,40] ]

由于第一个数组中不存在“c”,因此第一个整数应为 0。

谢谢你。

标签: pythonarraysmultidimensional-array

解决方案


如评论中所述,如果缺失值可以在任何地方,则不能使用zipor zip_longest。在这里,我使用 dicts 来连接值:

a = [ ['a',1],  ['b',2],  ['c',3]            ]
b = [ ['a',10], ['b',20], ['c',30], ['d',40] ]

d1, d2 = dict(a), dict(b)

d = {k: [d1.get(k, 0), d2.get(k, 0)] for k in d1.keys() | d2.keys()}

print( sorted([k, *v] for k, v in d.items()) )  # use custom key= to sort them to right order (or don't use sort if you don't need it)

印刷:

[['a', 1, 10], ['b', 2, 20], ['c', 3, 30], ['d', 0, 40]]

推荐阅读