My goal is to efficiently find in a large list of list (let's take as an example 1 mln of entries and each entry is a list composed of 3 elements) the index of the element containing a certain value:
e.g let's take the list a
a = [[0,1,2],[0,5,6],[7,8,9]]
i want to retrive the indices of the elements containing the value 0, hence my function would return 0,1
My first try has been the following:
def any_identical_value(elements,index):
for el in elements:
if el == index:
return True
return False
def get_dual_points(compliant_cells, index ):
compliant = [i for i,e in enumerate(compliant_cells) if any_identical_value(e,index)]
return compliant
result = get_dual_points(a,0)
The solution works correctly but it is highly inefficient for large list of lists. In particular my goal is to perform a number of quesries that is the total number of values in the primary list, hence n_queries = len(a)*3, in the example above 9.
Here comes 2 questions:
- Is the list the good data structure to achieve this task?
- Is there a more efficient algorithm solution?