Advertisement
Bisix

process

Jul 9th, 2019
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.24 KB | None | 0 0
  1. from __future__ import print_function, division, absolute_import, unicode_literals
  2.  
  3. # By Bravo Six, https://mobile.facebook.com/Bravo.Six.Going.Seven
  4.  
  5. def eiz(n):
  6.     if n == 0: return ''
  7.     sv = str('{0:.2f}'.format(n))
  8.     i, f = sv.split(".")
  9.     return i if f == "00" else sv
  10.  
  11.  
  12. def grouping(data):
  13.     GK_LIMITER = "___"
  14.     indexes = set(int(k.rsplit("_", 1)[-1]) for k in data.keys())
  15.     idx_ = 0
  16.  
  17.     def gv(key):
  18.         return data["%s_%i" % (key, idx_)][0]
  19.  
  20.     groups = {}
  21.     for idx in indexes:
  22.         idx_ = idx
  23.  
  24.         key = "%s%s%s" % (gv("cell"), GK_LIMITER, gv("jam"))
  25.         if key not in groups:
  26.             groups[key] = {"indexes": [], "output_jam": [], "output_ot": []}
  27.         groups[key]["indexes"].append(idx)
  28.  
  29.         col = "output_ot" if (gv("jam") in ("16-17", "17-18", "18-19")) else "output_jam"
  30.         groups[key][col].append(float(gv("output")))
  31.  
  32.     return groups, indexes
  33.  
  34.  
  35. def process(data):
  36.     groups, _ = grouping(data)
  37.     idx_ = 0
  38.  
  39.     def gv(key):
  40.         return data["%s_%i" % (key, idx_)][0]
  41.  
  42.     def sv(key, value):
  43.         data["%s_%i" % (key, idx_)] = [value]
  44.  
  45.     def safe_div(dividend, divider):
  46.         return 0 if divider == 0 else (dividend / divider)
  47.  
  48.     for g_data in groups.values():
  49.         for idx in g_data["indexes"]:
  50.             idx_ = idx
  51.  
  52.             output_jam = sum(g_data["output_jam"])
  53.             output_ot = sum(g_data["output_ot"])
  54.             sv('output_jam', eiz(output_jam))
  55.             sv('output_ot', eiz(output_ot))
  56.  
  57.             output = float(gv('output'))
  58.             sv('time', eiz(safe_div(output, output_jam)))
  59.             sv("time_ot", eiz(safe_div(output, output_ot)))
  60.  
  61.     return data
  62.  
  63.  
  64. def _main(data):
  65.     result = process(data)
  66.     print(result)
  67.  
  68. if __name__ == "__main__":
  69.  
  70.     data = {
  71.         'cell_1': ['13a'], 'jam_1': ['07-08'], 'model_1': ['SUPERSTAR'], 'output_1': ['10'], 'output_jam_1': [''],
  72.         'time_1': [''], 'output_ot_1': [''], 'time_ot_1': [''],
  73.         'cell_2': ['13a'], 'jam_2': ['07-08'], 'model_2': ['SUPERSTAR'], 'output_2': ['20'], 'output_jam_2': [''],
  74.         'time_2': [''], 'output_ot_2': [''], 'time_ot_2': [''],
  75.         'cell_3': ['13c'], 'jam_3': ['07-08'], 'model_3': ['SUPERSTAR'], 'output_3': ['40'], 'output_jam_3': [''],
  76.         'time_3': [''], 'output_ot_3': [''], 'time_ot_3': [''],
  77.         'cell_4': ['13b'], 'jam_4': ['08-09'], 'model_4': ['SUPERSTAR'], 'output_4': ['30'], 'output_jam_4': [''],
  78.         'time_4': [''], 'output_ot_4': [''], 'time_ot_4': [''],
  79.         'cell_5': ['13d'], 'jam_5': ['16-17'], 'model_5': ['SUPERSTAR'], 'output_5': ['40'], 'output_jam_5': [''],
  80.         'time_5': [''], 'output_ot_5': [''], 'time_ot_5': [''],
  81.         'cell_6': ['13d'], 'jam_6': ['16-17'], 'model_6': ['SUPERSTAR'], 'output_6': ['40'], 'output_jam_6': [''],
  82.         'time_6': [''], 'output_ot_6': [''], 'time_ot_6': [''],
  83.         'cell_7': ['13d'], 'jam_7': ['17-18'], 'model_7': ['SUPERSTAR'], 'output_7': ['10'], 'output_jam_7': [''],
  84.         'time_7': [''], 'output_ot_7': [''], 'time_ot_7': [''],
  85.         'cell_8': ['13d'], 'jam_8': ['18-19'], 'model_8': ['SUPERSTAR'], 'output_8': ['60'], 'output_jam_8': [''],
  86.         'time_8': [''], 'output_ot_8': [''], 'time_ot_8': ['']}
  87.    
  88.     _main(data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement