比较两个列表之间的唯一字符串值,并在python中获取匹配值的计数

时间:2018-10-04 14:30:23

标签: python-3.x list string-comparison

我有两个清单,其中一些共同点,有些却不相同。我想比较两个列表并获取匹配项的数量。

list1 = ['apple','orange','mango','cherry','banana','kiwi','tomato','avocado']
list2 = ['orange','avocado','kiwi','mango','grape','lemon','tomato']

请提出如何在python中执行此操作

2 个答案:

答案 0 :(得分:1)

使用Counters和字典理解。

list1 = ['apple','orange','mango','cherry','banana','kiwi','tomato','avocado']
list2 = ['orange','avocado','kiwi','mango','grape','lemon','tomato']
c1 = Counter(list1)
c2 = Counter(list2)
matching = {k: c1[k]+c2[k] for k in c1.keys() if k in c2}
print(matching)
print('{} items were in both lists'.format(len(macthing))

输出:

{'avocado': 2, 'orange': 2, 'tomato': 2, 'mango': 2, 'kiwi': 2}
5 items were in both lists

答案 1 :(得分:1)

我认为您可以在此示例中使用set.intersection

list1 = ['apple','orange','mango','cherry','banana','kiwi','tomato','avocado']
list2 = ['orange','avocado','kiwi','mango','grape','lemon','tomato']

result = {elm: list1.count(elm) + list2.count(elm) for elm in set.intersection(set(list1), set(list2))}

输出:

{'kiwi': 2, 'avocado': 2, 'orange': 2, 'tomato': 2, 'mango': 2}