Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. __author__ = 'uolter'
  2.  
  3. import map_reduce
  4.  
  5. def mapper(input_key, input_value):
  6.  
  7. def cut_and_clean_value(cluster):
  8. """
  9. :param cluster: string in the format <cluster>:<value>
  10. :return: touple cluster and value. If value is NaN return 0
  11. """
  12.  
  13. ret = cluster.split(":")
  14.  
  15. if ret[1] == 'NaN':
  16. ret[1] = 0.0
  17. val = round(float(ret[1]), 2)
  18.  
  19. if val >= 0.80:
  20. val = 4
  21. elif val >= 0.60:
  22. val = 3
  23. elif val >= 0.40:
  24. val = 2
  25. elif val >= 0.20:
  26. val = 1
  27. else:
  28. val = 0
  29.  
  30. return ret[0], val
  31.  
  32. return [cut_and_clean_value(c) for c in input_value.split(";")]
  33.  
  34.  
  35. def reducer(intermediate_key, intermediate_value_list):
  36. return intermediate_key, sum(intermediate_value_list)
  37.  
  38. def main():
  39. input_file = 'text/input.txt'
  40. i = {}
  41. with open(input_file) as file:
  42. data = file.readlines()
  43. for d in data:
  44. user_id = d[:9]
  45. i[user_id] = d[10:]
  46.  
  47. print map_reduce.map_reduce(i, mapper, reducer)
  48.  
  49.  
  50. if __name__ == '__main__':
  51. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement