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
Post a Comment