Start learning free

LESSON 189 OF 410 · NESTED LOOPS

Top K Brands V4 - Top K in Python

Practice

Show the top k brands by rating. This is v3's search, repeated k times: find the best brand, mark it as taken, then search again among the brands that are not taken yet, until you have k brands in rank order.

You start with:

brands = ["TechPro", "MegaCorp", "Quantum", "NeoByte", "Zenith"]
ratings = [4, 5, 3, 5, 4]
k = 3

Build:

1. MegaCorp (5)
2. NeoByte (5)
3. TechPro (4)

Rules:

  • Repeat v3's search k times. Each round looks only at brands that are not taken yet and picks the one with the highest rating, then marks it as taken (one true/false flag per brand).
  • Ties go to the brand listed first: keep the first brand you find and replace it only on a strictly higher rating.
  • k is never larger than the number of brands.
  • Each line is "rank. Brand (rating)", starting at rank 1.
  • Join the lines with "\n" and store the text in output (the site prints it for you).

Start with the two declarations used = [False] * len(ratings) and lines = []. A flag tells whether that position is already taken.

Each round is v3's search: nothing found yet, scan every position, skip taken ones, keep the first candidate and replace it only on a strictly higher rating. Then mark the winner as taken and add its line.

brands = ["TechPro", "MegaCorp", "Quantum", "NeoByte", "Zenith"]
ratings = [4, 5, 3, 5, 4]
k = 3

used = [False] * len(ratings)
lines = []
for rank in range(1, k + 1):
    best_index = -1
    for i in range(len(ratings)):
        if not used[i]:
            if best_index == -1 or ratings[i] > ratings[best_index]:
                best_index = i
    used[best_index] = True
    lines.append(str(rank) + ". " + brands[best_index] + " (" + str(ratings[best_index]) + ")")
output = "\n".join(lines)

STEP 1 OF 11
    Ctrl + Enter to check

    Top K Brands V4 in Python

    Keep going with PythonAbout 340 step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free