Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 组合两个多维阵列_Python_Arrays_Multidimensional Array - Fatal编程技术网

Python 组合两个多维阵列

Python 组合两个多维阵列,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,在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或zip\u。在这里,我使用

在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
zip\u
。在这里,我使用DICT连接值:

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

在我看来,为数据类型选择字典比列表更有意义,但如果需要使用列表,这是一种方法:

  • 原始列表中的列表实际上只是元组,将键与值匹配;字典在这里更有意义
  • 对于原始列表中的每个键,您希望在结果中有一个列表
  • 结果列表中的列表实际上只是3元组,将键与第一个和第二个值匹配
  • 您希望每个键的第一个列表中的值(如果没有,则为0)作为第一个值
  • 您希望每个键的第一个列表中的值(如果没有,则为0)作为第二个值
请注意,
sorted()
用于保持顺序。如果不能保证按字母顺序排列,您可以使用如下方式组合键和重复数据消除:

def dedupe(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]

是否只缺少最后的值?例如,不是从列表的开头或中间开始?@AndrejKesely是的,它可以是从任何地方开始的。@AndrejKesely您删除的答案是正确的。谢谢@菲利佩亚巴波利多不,不是。缺少
['b',2,20]
值…@AndrejKesely这很奇怪,可能遗漏了它,让我在这里再次检查我的原始数组。
def dedupe(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]