如何在python中比较N个列表并创建具有唯一元素的新列表

如何在python中比较N个列表并创建具有唯一元素的新列表,python,Python,我将收到一个具有此结构的json {'compare': [["A","B","C"], ["A","D","C"], ["E","A"]...} 例如,我将比较每个数组,并希望创建一个仅包含唯一项的新列表 {"unique":["B","D","E"]} 合并所有列表,计算元素,仅保留唯一的元素。下面使用的是列表列表,而不是字典(字典没有任何值)。使用内置软件包是最快、最具python风格的: import collections,itertools lst = [["A","B","C

我将收到一个具有此结构的json

{'compare': [["A","B","C"], ["A","D","C"], ["E","A"]...}
例如,我将比较每个数组,并希望创建一个仅包含唯一项的新列表

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

合并所有列表,计算元素,仅保留唯一的元素。下面使用的是列表列表,而不是字典(字典没有任何值)。使用内置软件包是最快、最具python风格的:

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']

合并所有列表,计算元素,仅保留唯一的元素。下面使用的是列表列表,而不是字典(字典没有任何值)。使用内置软件包是最快、最具python风格的:

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']

您也可以使用
默认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])


您也可以使用
默认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])


合并所有列表,计数元素,仅保留唯一的列表。合并所有列表,计数元素,仅保留唯一的列表。