Как найти словари в одном списке, а не в другом - PullRequest
0 голосов
/ 02 октября 2018

Скажем, у нас есть 2 списка словарей L1 и L2.

Я хочу иметь список словарей, которые есть в L2, но не в L1.В моем случае L1 является подмножеством L2, поэтому я не уверен, что этот факт можно использовать для оптимизации.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

решение

[_dict for _dict in l1 if _dict not in l2]

Это получит словари, которые находятся в l1, но не в l2

0 голосов
/ 02 октября 2018

Вы можете использовать понимание списка:

L1 = [{1: 2, 2: 3}, {2: 3, 3: 4}]
L2 = [{1: 2, 2: 3}, {4: 5, 5: 6}]
print([d for d in L2 if d not in L1])

Это выводит:

[{4: 5, 5: 6}]

Или, если у вас большой список диктов, вы должны конвертировать L1 в наборкортежи для эффективного поиска членов:

set1 = set(tuple(d.items()) for d in L1)
print([d for d in L2 if tuple(d.items()) not in set1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...