class Klasemen:
    def __init__(self, clubs):
        # make every club start at 0 point
        self.poin = {club: 0 for club in clubs}

    def catatPermainan(self, klubKandang, klubTandang, skor):
        home, away = skor.split(":")  # split with :
        home, away = int(home), int(away)

        if home > away:
            self.poin[klubKandang] += 3  # home/kandang win
        elif away > home:
            self.poin[klubTandang] += 3  # away/tandang win
        else:
            self.poin[klubKandang] += 1  # tie, both teams get 1 poin
            self.poin[klubTandang] += 1

    # core logic
    def ambilPeringkat(self, nomorPeringkat):
        clubs = list(self.cetakKlasemen().keys())
        # self.cetakKlasemen refers to klasemen table with self so knows which table
        # keys only grab the club names like Arsenal, Chelsea, Liverpool
        # list makes it into a list like ['Arsenal', 'Chelsea', 'Liverpool']
        return clubs[nomorPeringkat - 1]  # buat fit ke array karena array mulai dari 0

    def cetakKlasemen(self):
        return dict(sorted(self.poin.items(), key=lambda x: x[1], reverse=True))
        # self.poin.items() turns the dict into pairs, e.g. ('Arsenal', 8)
        # lambda x: x[1] means sort by x[1] (points)
        # reverse=True sorts descending, and dict() converts it back to a dictionary


# samples
klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal'])
klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1')
klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1')
klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3')
klasemen.catatPermainan('Chelsea', 'Liverpool', '3:2')
klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2')
klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0')
print(klasemen.cetakKlasemen())     # {'Arsenal': 8, 'Chelsea': 5, 'Liverpool': 2}
print(klasemen.ambilPeringkat(2))   # Chelsea