Как сравнить два списка и сделать общий список по условию
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']]