Как сравнить два списка и сделать общий список по условию

a = [['лестница', '2', 'False'], ['кирпич', '3', 'False'], ['обои', '4', 'False']]
b = [['лестница', '2', 'True'], ['кирпич', '3', 'True']]
# результат должен быть следующим
res = [['лестница', '2', 'True'], ['кирпич', '3', 'True'], ['обои', '4', 'False']]

В общем приходит список b. Надо сравнить его со списком a и, если список b не соответствует a полностью, как в данном примере, добавить недостающий элемент в b, в данном случае ['обои', '4', 'False']. Как это сделать? Сравнить нормально через циклы не получается.


Ответы (2 шт):

Автор решения: strawdog
a = [['лестница', '2', 'False'], ['кирпич', '3', 'False'], ['обои', '4', 'False']]
b = [['лестница', '2', 'True'], ['кирпич', '3', 'True']]

b.extend(x for x in a if x[0] not in [y[0] for y in b])

b:

[['лестница', '2', 'True'], ['кирпич', '3', 'True'], ['обои', '4', 'False']]
→ Ссылка
Автор решения: Semitron
a = [['лестница', '2', 'False'], ['кирпич', '3', 'False'], ['обои', '4', 'False']]
b = [['лестница', '2', 'True'], ['кирпич', '3', 'True']]
for i in a: # пробегаемся по списку a
    if i[0] in [j[0] for j in b]: # проверяем соответствие списка b к списку a
        continue # список соответствует - продолжаем проходить по циклу
    else:
        b += [i] # список не соответствует - добавляем недостающий элемент в список b
print(b) # выводим получившийся список

вывод:

 [['лестница', '2', 'True'], ['кирпич', '3', 'True'], ['обои', '4', 'False']]
→ Ссылка