python - 组合两个多维数组
问题描述
在 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。
谢谢你。
解决方案
如评论中所述,如果缺失值可以在任何地方,则不能使用zip
or 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]]