Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
how to use one list to find a similar list in another list python
I want a way to make it so that I can use list B to find out if a copy of itself exists in list A.
listA = ['1', '1', '0', '1', '0', '1', 'down'] 2
['0', '0', '1', '1', '1', '1', 'up'] 2
['1', '0', '0', '1', '0', '1', 'up'] 1
['0', '0', '0', '1', '1', '0', 'up'] 2
['1', '1', '0', '0', '0', '0', 'up'] 1
['0', '0', '1', '1', '0', '1', 'down'] 1
['1', '0', '0', '0', '0', '1', 'down'] 1
['1', '1', '1', '1', '1', '1', 'up'] 1
listB = ['1', '1', '1', '1', '1', '1']
list A also shows how many times that particular list has appeared
So, I want a way to first find the repeating list of list B in list A, and secondly to select the one with the most repetitions in the case that there are multiple versions of it.
1 answer
You could just iterate through the list of lists and compare each list with the list that you're looking for.
Once you've found a combination that matches you can add the combination to a dictionary of combinations if the combination isn't there.
If you find a combination that is already there you increment the occurrences of that combination.
When you've gotten all occurrences of all combinations you can grab that combination that has the highest occurrences.
I wrote some code that demonstrates how you might do this:
listA = [['1', '1', '0', '1', '0', '1', 'down'],
['0', '0', '1', '1', '1', '1', 'up'],
['1', '0', '0', '1', '0', '1', 'up'],
['0', '0', '0', '1', '1', '0', 'up'],
['1', '1', '0', '0', '0', '0', 'up'],
['1', '1', '1', '1', '1', '1', 'down'],
['0', '0', '1', '1', '0', '1', 'down'],
['1', '0', '0', '0', '0', '1', 'down'],
['1', '1', '1', '1', '1', '1', 'down'],
['1', '1', '1', '1', '1', '1', 'up'],
['1', '1', '1', '1', '1', '1', 'up'],
['1', '1', '1', '1', '1', '1', 'up']
]
listB = ['1', '1', '1', '1', '1', '1']
highestOccurence=0
matchingCombinations={}
indexHighest=0
def findEqual(listB, combination):
found=False
for index, value in enumerate(listB):
if value==combination[index]:
found=True
continue
else:
found=False
break
return found
for index, combination in enumerate(listA):
if findEqual(listB, combination):
if str(combination) in matchingCombinations.keys():
matchingCombinations[str(combination)]+=1
else:
matchingCombinations[str(combination)]=1
if matchingCombinations[str(combination)]>highestOccurence:
indexHighest=index
highestOccurence=matchingCombinations[str(combination)]
print(matchingCombinations)
print(listA[indexHighest])
The code outputs
{"['1', '1', '1', '1', '1', '1', 'down']": 2, "['1', '1', '1', '1', '1', '1', 'up']": 3}
['1', '1', '1', '1', '1', '1', 'up']
1 comment thread