我为这个令人困惑的标题道歉。我想知道比较两个子列表的最佳方法是什么,如果子列表中的一个项目与另一个列表的子列表中的一个项目匹配,则前一个列表将扩展为后一个列表的项目。我知道这听起来很混乱,所以下面是详细信息:
我有两个子列表:
listA = [['x', 'apple', 'orange'], ['y', 'cat', 'dog'], ['z', 'house', 'home']]
listB = [['z', 7, 8, 9], ['x', 1, 2, 3], ['y', 4, 5, 6]]
现在我想延长发言时间
listA
使其包含
listB
如果
listA公司
的子列表与的子列表匹配
列表B
的子列表。因此,基本上,最终结果应该是:
listA = [['x', 'apple', 'orange', 1, 2, 3], ['y', 'cat', 'dog', 4, 5, 6], ['z', 'house', 'home', 7, 8, 9]]
以下是我尝试过的:
for (sublistA, sublistB) in zip(listA, listB):
if sublistA[0] == sublistB[0]:
sublistA.extend(sublistB[1], sublistB[2], sublistB[3])
然而,代码似乎在if语句中失败了。当我打印listA时,我得到的只是它的原始项目:
>>> print(listA)
[['x', 'apple', 'orange'], ['y', 'cat', 'dog'], ['z', 'house', 'home']]
为什么if语句不起作用?有什么方法可以进行匹配,然后提取项目?
编辑:
根据idjaw的建议,我创建了第三个列表,并再次尝试执行上述操作。然而,我似乎得到了一个空列表,因为if语句似乎不再有效。代码如下:
listC = []
for (sublistA, sublistB) in zip(listA, listB):
if sublistA[0] == sublistB[0]:
listC.append(sublistA[0], sublistA[1], sublistA[2],
sublistB[1], sublistB[2], sublistB[3])
print(listC)
输出:
[]