hobbies = {'Gru':set(['Hiking','Cooking']),'Edith':set(['Hiking','Board Games'])}

new_dict = {}

for person in hobbies:
    for h in hobbies[person]:
        if h in new_dict:
            new_dict[h].add(person)
        else:
            new_dict[h] = set([person])

print new_dict

####

imdb_file = "imdb_data.txt"

years_and_movies = {}
for line in open(imdb_file):
    words = line.strip().split('|')
    movie_name = words[1].strip()
    year = int(words[2])
    if year in years_and_movies:
        years_and_movies[year].add(movie_name)
    else:
        years_and_movies[year] = set([movie_name])

print len(years_and_movies[1975])

# one way using lists and sorting to find top year
# slower than second method as it has complexity of n*log(n)+n
movie_count = []
for year in years_and_movies:
    movie_count.append([len(years_and_movies[year]),year])

movie_count.sort(reverse=True)
print movie_count[0]

# using just dictionary and storing max as we go long
# faster method as it's just complexity of n
max_value = 0
max_year = 0
for year in years_and_movies:
    if len(years_and_movies[year]) > max_value:
        max_value = len(years_and_movies[year])
        max_year = year

print max_value,max_year


###

actors = {}
movies = {}

for line in open(imdb_file):
    words = line.strip().split('|')
    actor = words[0].strip()
    movie_name = words[1].strip()
    if actor in actors:
        actors[actor].add(movie_name)
    else:
        actors[actor] = set([movie_name])
        
    if movie_name in movies:
        movies[movie_name].add(actor)
    else:
        movies[movie_name] = set([actor])

bacon_numbers = {0:set(["Bacon, Kevin"]),1:set([])}
for movie in actors["Bacon, Kevin"]:
    for actor in movies[movie]:
        bacon_numbers[1].add(actor)
        
print bacon_numbers[1]

######

peoples = {"Thomas":"red","Ashok":"green","Sandy":"red","Allison":"orange","Fei":"blue","Natasha":"blue","Brennah":"blue"}

print peoples
peoples["Fei"] = "green"
print peoples

del peoples["Sandy"]
print peoples

colors = {}
#color: count

for person in peoples:
    color = peoples[person]
    if color in colors:
        colors[color] += 1
    else:
        colors[color] = 1

max_value = max(colors.values())

for color in colors:
    if colors[color] == max_value:
    print color

####

last_names = {}
for line in open(imdb_file):
    words = line.strip().split('|')
    actor = words[0].strip().split(',')
    for a in range(len(actor)):
        actor[a] = actor[a].strip()
    

    if len(actor) > 1:
        if actor[0] in last_names:
            last_names[actor[0]].add(actor[1])
        else:
            last_names[actor[0]] = set([actor[1]])
        
print last_names["Bacon"]

####

actors = {}

for line in open(imdb_file):
    words = line.strip().split('|')
    actor = words[0].strip()
    movie_name = words[1].strip()
    if actor in actors:
        actors[actor].add(movie_name)
    else:
        actors[actor] = set([movie_name])

common_count = 0
actor_names = []

for actor in actors:
    for actor2 in actors:
        if actor == actor2:
            continue
        common = len(actors[actor] & actors[actor2])
        if common > common_count:
            common_count = common
            actor_names = [actor,actor2]

print common_count,actor_names