Как проверить и поменять значения в подмассивах?

t = [['234', 'True'], ['2353', 'False']]
y = [['234', 'False'], ['2353', 'False']]

Надо чтоб получилось в переменной y так:

y = [['234', 'True'], ['2353', 'False']]

т.е. значения True False из t применились к True False из y. Пробовал цикл в цикле, но меняет каждый раз все заново.


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

Автор решения: CrazyElf

Ну буквально если то так:

t = [['234', 'True'], ['2353', 'False'], ['123', 'False']]
y = [['234', 'False'], ['2353', 'False'], ['321', 'True']]

d = dict(t)
for i in y:
    k,v = i
    if k in d and d[k] != v:
        i[1] = d[k]

print(y)

Вывод:

[['234', 'True'], ['2353', 'False'], ['321', 'True']]

Я добавил по несовпадающему элементу в списки, чтобы видно было, что меняется именно список y, а не просто мы присвоили в y ссылку на t.

Словарь сделан, чтобы быстрее искать элементы.

Ну а дальше буквально - идём по второму списку, смотрим есть ли такой элемент в первом списке, отличается ли он, и если есть, то подменяем этот элемент в списке во втором словаре.

→ Ссылка