4 (jupiter)

 import csv

def mapper(tags): return [(r['movieId'], r['tag']) for r in tags]

def reducer(vals): return list(set(vals))

def map_reduce(tags):

    g = {}

    for k,v in mapper(tags): g.setdefault(k, []).append(v)

    return {k: reducer(v) for k,v in g.items()}

def load_csv(f): return list(csv.DictReader(open(f)))

def get_titles(rows): return {r['movieId']: r['title'] for r in rows}

tags = load_csv('tags.csv')

movies = get_titles(load_csv('movies.csv'))

for m,t in map_reduce(tags).items():

    print(f"Movie: {movies[m]}, Tags: {', '.join(t)}")

.....................................................................................................................
def mapper(tags): 
    return [(r['movieId'], r['tag']) for r in tags]
def reducer(values): 
    return list(set(values))
def map_reduce(tags):
    grouped = {}
    for k, v in mapper(tags): 
        grouped.setdefault(k, []).append(v)
    return {k: reducer(v) for k, v in grouped.items()}
def main():
    tags = [
        {'movieId': '1', 'tag': 'funny'},
        {'movieId': '1', 'tag': 'action'},
        {'movieId': '2', 'tag': 'drama'},
        {'movieId': '2', 'tag': 'romance'},
        {'movieId': '1', 'tag': 'funny'}
    ]
    movies = {
        '1': 'Movie One',
        '2': 'Movie Two'
    }
    result = map_reduce(tags)
    for mid, tgs in result.items():
        print(f"Movie: {movies[mid]}, Tags: {', '.join(tgs)}")
if __name__ == "__main__":
    main()

Comments

Popular posts from this blog

7

8

6