Finding intersection of two lists of strings in python
intersection, list, python, set, string
Solution
You can use `flatten` function of `compiler.ast` module to flatten your sub-list and then apply set intersection like this
from compiler.ast import flatten
A=[['11@N3'], ['23@N0'], ['62@N0'], ['99@N0'], ['47@N7']]
B=[['23@N0'], ['12@N1']]
a = flatten(A)
b = flatten(B)
common_elements = list(set(a).intersection(set(b)))
common_elements
['23@N0']
Problem
I have gone through Find intersection of two lists?, Intersection of Two Lists Of Strings, Getting intersection of two lists in python. However, I could not solve this problem of finding intersection between two string lists using Python. I have two variables. ``` A = [['11@N3'], ['23@N0'], ['62@N0'], ['99@N0'], ['47@N7']] B = [['23@N0'], ['12@N1']] ``` How to find that '23@N0' is a part of both A and B? I tried using intersect(a,b) as mentioned in http://www.saltycrane.com/blog/2008/01/how-to-find-intersection-and-union-of/ But, when I try to convert A into set, it throws an error: ``` File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' ``` To convert this into a set, I used the method in TypeError: unhashable type: 'list' when using built-in set function where the list can be converted using ``` result = sorted(set(map(tuple, A)), reverse=True) ``` into a tuple and then the tuple can be converted into a set. However, this returns a null set as the intersection. Can you help me find the intersection?