Вы можете использовать defaultdict
для группировки по именам:
from collections import defaultdict
List1 = [['Jack','27','cat','house','fireman'], ['Tom','43','cat','Flat','Doctor'], ['Ben','30','Dog','house','Postman']]
List2 = [['Orange','5','Tom'], ['Blue','11','Ben'], ['Red','21','Jack']]
d = defaultdict(list)
for lst in List1:
d[lst[0]].extend(lst)
for lst in List2:
d[lst[-1]].extend(lst)
print([v for v in d.values()])
Поскольку оба списка имеют одинаковую длину, мы также можем обойтись без zip
здесь:
d = defaultdict(list)
for x, y in zip(List1, List2):
d[x[0]].extend(x)
d[y[-1]].extend(y)
print([v for v in d.values()])
Выход:
[['Jack', '27', 'cat', 'house', 'fireman', 'Red', '21', 'Jack'], ['Tom', '43', 'cat', 'Flat', 'Doctor', 'Orange', '5', 'Tom'], ['Ben', '30', 'Dog', 'house', 'Postman', 'Blue', '11', 'Ben']]