动人的家伙。
我有一个问题,关于如何在几个条件下附加数组元素。
假设我的数组是这样的:
A=[[100,Z],[102,A],...,[9901,A]]
和另一个类似的数组:
B=[[100,-0.22,0.99],[102,-0.442,0.99],...,[9901,-1.22,4.99]]
数组A和B的长度不同。 我想将两个数组元素都附加这样的条件:
if(A[0][0]==B[0][0]):
temp = [B[0][1],B[0][2],A[0][1]]
array_new.append(temp)
我尝试追加,并且可以工作,但是新数组的长度比A数组的短。
我的代码有问题吗?
这是我连接代码的方式:
for g in range(len(A)):
for h in range(len(B)):
if(B[h][0]==A[g][0]):
temp = [B[h][1],B[h][2],A[g][1]]
array.append(temp)
谢谢您,祝您愉快。
答案 0 :(得分:0)
这与A和B中具有相同第一项的元素匹配。
将B转换为以第一个元素为键的字典。
A的第二个元素被转换为字符,您不能定义A递归。
A=[[100,'Z'],[102,'A'],[9901,'C']]
B=[[100,-0.22,0.99],[102,-0.442,0.99],[9901,-1.22,4.99]]
B_Dict = { b[0]:b for b in B }
array_new = [ [B_Dict.get(a[0])[1],B_Dict.get(a[0])[2],a[1]] for a in A if B_Dict.get(a[0])]
print (array_new)
答案 1 :(得分:-1)
已编辑
如果正确缩进,则array
的长度必须与A
相同或小于A
。
修复缩进:
for g in range(len(A)):
for h in range(len(B)):
if(B[h][0]==A[g][0]):
temp = [B[h][1],B[h][2],A[g][1]]
array.append(temp)