Here's some data QUERY A361 Found at: 160392127418 Number of times present: 4 Found at: 150158692866 Number of times present: 3 Found at: 122340445248 Number of times present: 17 Found at: 137248651778 Number of times present: 84 Found at: 131891981708 Number of times present: 66 QUERY 32B57 Found at: 194561247604 Number of times present: 4 Found at: 82888490886 Number of times present: 3 Found at: 115836535414 Number of times present: 19 Found at: 79615924948 Number of times present: 80 Write a python function called `process` that will take data like this as an argument and return a dict where the keys are the like A361/32B57 and the values are how often its present in total.
Here's some data QUERY A361 Found at: 160392127418 Number of times present: 4 Found at: 150158692866 Number of times present: 3 Found at: 122340445248 Number of times present: 17 Found at: 137248651778 Number of times present: 84 Found at: 131891981708 Number of times present: 66 QUERY 32B57 Found at: 194561247604 Number of times present: 4 Found at: 82888490886 Number of times present: 3 Found at: 115836535414 Number of times present: 19 Found at: 79615924948 Number of times present: 80 Write a python function called `process` that will take data like this as an argument and return a dict where the keys are the like A361/32B57 and the values are how often its present in total.
To solve this problem, we need to process a string containing query data and return a dictionary where each key is a query name and the corresponding value is the total number of times that query was present. The solution involves parsing the input string line by line, tracking the current query, and summing up the presence counts for each query. ### Approach 1. **Parse Input Data**: Split the input string into individual lines. 2. **Track Current Query**: Identify lines starting with "QUERY" to determine the current query being processed. 3. **Sum Presence Counts**: For each line indicating the number of times a query is present, extract the count and add it to the current query's total in the dictionary. 4. **Handle Empty Lines**: Skip any empty lines that do not contain relevant data. ### Solution Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def process(data): totals = {} current_query = None for line in data.split('\n'): stripped = line.strip() if not stripped: continue if stripped.startswith('QUERY'): current_query = stripped.split()[1] if current_query not in totals: totals[current_query] = 0 elif stripped.startswith('Number of times present:'): if current_query is not None: count = int(stripped.split(': ')[1]) totals[current_query] += count return totals |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def process(data): totals = {} current_query = None for line in data.split('\n'): stripped = line.strip() if not stripped: continue if stripped.startswith('QUERY'): current_query = stripped.split()[1] if current_query not in totals: totals[current_query] = 0 elif stripped.startswith('Number of times present:'): if current_query is not None: count = int(stripped.split(': ')[1]) totals[current_query] += count return totals |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | def process(data): totals = {} current_query = None for line in data.split('\n'): stripped = line.strip() if not stripped: continue if stripped.startswith('QUERY'): current_query = stripped.split()[1] if current_query not in totals: totals[current_query] = 0 elif stripped.startswith('Number of times present:'): if current_query is not None: count = int(stripped.split(': ')[1]) totals[current_query] += count return totals answer = process('QUERY A361\nFound at: 160392127418\nNumber of times present: 4\n\n\nFound at: 150158692866\nNumber of times present: 4\n\n\nFound at: 122340445248\nNumber of times present: 17\n\n\nFound at: 137248651778\nNumber of times present: 84\n\n\nFound at: 131891981708\nNumber of times present: 66\n\n\nQUERY 32B57\nFound at: 194561247604\nNumber of times present: 4\n\n\nFound at: 82888490886\nNumber of times present: 3\n\n\nFound at: 115836535414\nNumber of times present: 19\n\n\nFound at: 79615924948\nNumber of times present: 81\n') expected = {'A361': 175, '32B57': 107} assert answer == expected, f'Wrong answer; got {answer} instead of {expected}' print('All tests passed') |
All tests passed
Testing if the previous output contains the string All tests passed
: True