import check

##Count the number of distinct characters in a string.
def distinct_characters(s):
    chars = {}
    for char in s:
        chars[char] = True
    return len(chars)

check.expect("Test 1", distinct_characters("bananarama"), 5)

def character_count(s):
    count = {}
    for c in s:
        if c in count:
            count[c] += 1
        else:
            count[c] = 1
    return count

check.expect("Test 2", character_count("banana"), {'b':1, 'a':3, 'n':2})


#Returns the most common character in a string.
def most_common_character(s):
    chars = character_count(s)
    max_char = ''
    max_val = 0
    for char in chars:
        if chars[char] > max_val:
            max_val = chars[char]
            max_char = char
    return max_char

check.expect("Test 3", most_common_character("banana"), 'a')

def common_keys(d,f):
    return list(filter(lambda x: x in f, list(d.keys())))

def common_keys_2(d,f):
    L = []
    for x in d:
        if x in f:
            L.append(x)
    return L

check.expect("Test 4", common_keys_2({'a':1, 'b':2}, {'a':3, 'c':7,'b':3}),['b','a'])

class Country: 
    '''Fields: continent (Str), 
               leader (Str), 
               population (Nat)'''
    
    def __init__(self, cont, lead, pop):
	     self.continent = cont
	     self.leader = lead
	     self.population = pop
	
    def __repr__(self):
	     return "continent: {0.continent}; L: {0.leader}; POP: {0.population}".format(self)
		       
	     
canada = Country("North America", "Trudeau", 35344962)
canada2 = Country("North America", "Trudeau", 35344962)
usa = Country("North America", "Trump", 312345678)
india = Country("Asia","Modi",1241491960)