如何在python中比较N个列表并创建具有唯一元素的新列表
我将收到一个具有此结构的json如何在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
{'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])
合并所有列表,计数元素,仅保留唯一的列表。合并所有列表,计数元素,仅保留唯一的列表。