Sudhi
Sudhi

Reputation: 421

Compare unique string values between two lists and get the count of matched values in python

I have two lists with some items in common and some not. I would like to compare the two lists and get the count of items that matched.

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

Pls advice how to do this in python

Upvotes: 0

Views: 150

Answers (2)

Chiheb Nexus
Chiheb Nexus

Reputation: 9257

I think you can use set.intersection within a comprehension like this example:

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))}

Output:

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

Upvotes: 1

PyPingu
PyPingu

Reputation: 1747

Use Counters and dictionary comprehension.

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))

Output:

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

Upvotes: 1

Related Questions