Как сравнить N списков в python и создать новый список с уникальными элементами - PullRequest
0 голосов
/ 17 июня 2020

Я получу json с этой структурой

{'compare': [["A","B","C"], ["A","D","C"], ["E","A"]...}

Я сравню каждый массив и хочу создать новый список только с уникальными элементами, например

{"unique":["B","D","E"]}

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

объединить все списки, подсчитать элементы, оставить только те, которые уникальны. Далее используется список списков, а не словарь (что не приносит никакой ценности). Использование встроенных пакетов - самый быстрый и самый быстрый pythoni c:

import collections,itertools

lst = [["A","B","C"], ["A","D","C"], ["E","A"]]

# flatten lists and count elements
c = collections.Counter(itertools.chain.from_iterable(lst))

# filter, keep only elements counted once
result = [k for k,v in c.items() if v==1]

>>> result
['B', 'E', 'D']
0 голосов
/ 17 июня 2020

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

from collections import defaultdict

values = {'compare': [["A","B","C"], ["A","D","C"], ["E","A"]]}

counter = defaultdict(int)
for value in values['compare']:
    for v in value:
        counter[v] += 1

print([k for k, v in counter.items() if v == 1])

['B', 'D', 'E']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...