Сравнение 2-х списков диктонар в самом быстром виде для исполнения - PullRequest
0 голосов
/ 24 января 2019

У меня есть два списка, содержащих по 500 диктонар в каждом:

list_1 = [{id:'1',...}, {id:'2',...}]
list_2 = [{id:'1',...}, {id:'2',...}]

Мне нужно сравнить оба списка на основе идентификатора. (идентификаторы одинаковые, один больше другого).

Какой самый эффективный способ сравнить и вернуть разницу?

Можем ли мы также использовать yield для функции, которая выполняет сравнение, чтобы возвращать нам результаты один за другим?

1 Ответ

0 голосов
/ 24 января 2019
>>> list_1 = [{'unique_id':'001', 'key1':'AAA', 'key2':'BBB', 'key3':'EEE'}, 
              {'unique_id':'002', 'key1':'AAA', 'key2':'CCC', 'key3':'FFF'}]
>>> list_2 = [{'unique_id':'001', 'key1':'AAA', 'key2':'DDD', 'key3':'EEE'},
              {'unique_id':'002', 'key1':'AAA', 'key2':'CCC', 'key3':'FFF'}]
>>> pairs = zip(list_1, list_2)
>>> any(x != y for x, y in pairs)
True

Или получить разные пары:

>>> [(x, y) for x, y in pairs if x != y]

Вы можете даже получить ключи, которые не совпадают для каждой пары:

>>> [[k for k in x if x[k] != y[k]] for x, y in pairs if x != y]

Возможно вместе со связанными значениями:

>>> [[(k, x[k], y[k]) for k in x if x[k] != y[k]] for x, y in pairs if x != y]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...