compose_score_3day.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #coding utf-8
  2. import sys
  3. import json
  4. from db_help import RedisHelper
  5. if __name__=="__main__":
  6. nowdate = sys.argv[1]
  7. f1 = open("./data/sorted_hour_info_"+nowdate)
  8. f2 = open("./data/1_days_sorted_data_"+nowdate)
  9. f3 = open("./data/3_days_sorted_data_"+nowdate)
  10. data_dict = {}
  11. while True:
  12. line = f1.readline()
  13. if not line:
  14. break
  15. items = line.strip().split("\t")
  16. if len(items)<2:
  17. continue
  18. kid = items[0]
  19. #print(items[1])
  20. item_info = json.loads(items[1])
  21. data_dict[kid] = item_info
  22. f1.close()
  23. #f3 = open("./data/merge_score_"+nowdate, 'w')
  24. info_dict = {}
  25. while True:
  26. line = f2.readline()
  27. if not line:
  28. break
  29. items = line.split("\t")
  30. if len(items)<2:
  31. continue
  32. kid = items[0]
  33. d_item_info = json.loads(items[1])
  34. if kid in data_dict:
  35. item_info = data_dict[kid]
  36. total_info = []
  37. for i in range(len(item_info)):
  38. total_info.append(float(item_info[i])+0.1*float(d_item_info[i]))
  39. info_dict[kid] = total_info
  40. else:
  41. total_info = []
  42. for i in range(len(d_item_info)):
  43. total_info.append(float(d_item_info[i]))
  44. #if len(total_info)>2:
  45. # total_info[0] = total_info[1]+0.1*total_info[3]
  46. #total_item_info = json.dumps(total_info)
  47. #f3.write(kid2+"\t"+total_item_info+"\n")
  48. info_dict[kid] = total_info
  49. #print(info_dict)
  50. print("info:", len(info_dict))
  51. day3_dict = {}
  52. while True:
  53. line = f3.readline()
  54. if not line:
  55. break
  56. items = line.split("\t")
  57. if len(items)<2:
  58. continue
  59. kid = items[0]
  60. d_item_info = json.loads(items[1])
  61. if kid in info_dict:
  62. item_info = info_dict[kid]
  63. total_info = []
  64. for i in range(len(item_info)):
  65. total_info.append(float(item_info[i])+0.1*float(d_item_info[i]))
  66. day3_dict[kid] = total_info
  67. else:
  68. total_info = []
  69. for i in range(len(d_item_info)):
  70. total_info.append(float(d_item_info[i]))
  71. day3_dict[kid] = total_info
  72. print("info3:", len(day3_dict))
  73. f3 = open("./data/merge_3_days_score_"+nowdate, 'w')
  74. res_dict = {}
  75. res_dict2 = {}
  76. for k, v in day3_dict.items():
  77. score = v[0]
  78. new_arr = []
  79. new_arr.append(score)
  80. for i in range(4):
  81. new_arr.append(v[i])
  82. #print(v)
  83. #print(new_arr)
  84. total_item_info = json.dumps(new_arr)
  85. kid2 = "kp_3:"+k
  86. kid3 = "kp_4:"+k
  87. f3.write(kid2+"\t"+total_item_info+"\n")
  88. #res_dict[kid2] = total_item_info
  89. res_dict2[kid3] = total_item_info
  90. #if len(res_dict)>0:
  91. # redis_helper = RedisHelper()
  92. # redis_helper.update_batch_setnx_key(res_dict, 60*60*24*15)
  93. if len(res_dict2)>0:
  94. redis_helper = RedisHelper()
  95. redis_helper.update_batch_setnx_key(res_dict2, 60*60*24*3)
  96. f2.close()