Solution: HW5
testfuncscerrsol_stdoutsol_keptsol_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 836, 'const': 889, 'code+const': 1725}
# HW5_TSD (ไม่ลบหรือแก้ไขบรรทัดนี้ หรือเพิ่มอะไรก่อนบรรทัดนี้ โดยเด็ดขาด)
# ดูรายละเอียดและตัวอย่างเพิ่มเติมในคำอธิบายด้านบน
def convert_to_dict(data):
    d = {}
    keys = data[0]
    for row in data[1:]:
        e = dict(zip(keys, row))
        year = e['Year']
        noc = e['NOC']
        if year not in d:
            d[year] = {}
        if noc not in d[year]:
            d[year][noc] = []
        #del e['Year']
        #del e['NOC']
        d[year][noc].append(e)
    return d
#======================================
def get_medals_by_team(d, year):
    # d = {year: {NOC: [{...}, {...}, ...], ...}, ...}
    medals = {}
    if year in d:
        for NOC in d[year].keys():
            medals[NOC] = get_medals(d, year, NOC)
    return medals
#======================================
def get_top_five(medals):
    x = [(-g,-s,-b,noc) for noc, (g,s,b) in medals.items()]
    x.sort()
    i = 5
    while i < len(x):
        if x[4][:3] != x[i][:3]:
            break
        i += 1
    return [(noc, -g,-s,-b) for g,s,b,noc in x[:i]]
#======================================
def get_medals_trend(d, NOC, start, end):
    trend = []
    for year in sorted(d.keys()):
        y = int(year)
        if y > end: break
        if start <= y:
            gsb = get_medals(d, year, NOC)
            if gsb != None:
                g,s,b = gsb
                trend.append( (year, g,s,b) )
    return trend
#======================================
def get_sports(d, NOC, year):
    sports = set()
    if year in d and NOC in d[year]:
        for e in d[year][NOC]:
            if e['Medal'] != 'NA':
                sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(d, NOCs, year):
    if len(NOCs) == 0:
        return set()
    sports = None
    for noc in NOCs:
        if noc not in d[year]: return set()
        if sports == None:
            sports = get_sports(d, noc, year)
        else:
            sports &= get_sports(d, noc, year)
    return sports
#======================================
def get_medals(d, year, NOC):
    g,s,b = 0,0,0
    if year not in d or NOC not in d[year]:
        return None
    for e in d[year][NOC]:
        if e['Medal'] == 'Gold': g += 1
        if e['Medal'] == 'Silver': s += 1
        if e['Medal'] == 'Bronze': b += 1    
    return (g,s,b)
#======================================
# import csv
# 
# fn = open('athlete_events_2000-2016_cl.csv', 'r', encoding='utf-8-sig') 
# data = list(csv.reader(fn, delimiter = ','))
# fn.close()
# 
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(len(m))
# print(m)
# 
# print(get_common_sports(d, {'USA', 'RUS', 'CHN', 'JPN'}, '2000'))
# fn = open('mock2x.csv', 'r', encoding='utf-8-sig') 
# data = list(csv.reader(fn, delimiter = ','))
# fn.close()
# import pprint
# d = convert_to_dict(data)
# for y in d:
#     for noc in d[y]:
#         for e in d[y][noc]:
#             del e['NOC']
#             del e['Year']
#         
# pprint.pprint(d)

Testsuite: HW5
from spj_grader_034 import *
import csv
import random

spjTestsuite.set_testcase_default(
    timeout=3, stdout_limit=1000, kept_limit=50000, fsize_limit=2000,
)

class Testsuite(spjTestsuite):
    
    DATA = {}
    for name in ['mock1.csv', 'mock2.csv']:
        fn = open(name, 'r', encoding='utf-8-sig') 
        DATA[name] = list(csv.reader(fn, delimiter = ','))
        fn.close()

    def my_convert_to_dict(data):
        d = {}
        keys = data[0]
        for row in data[1:]:
            e = dict(zip(keys, row))
            year = e['Year']
            noc = e['NOC']
            if year not in d:
                d[year] = {}
            if noc not in d[year]:
                d[year][noc] = []
            d[year][noc].append(e)
        return d

    def dict_to_list(d):
        # d = {year: {NOC: [ {athelete info}, ... ] } }
        # x = [[year, NOC, ('Age',20), (...), ...], [...] ]
        x = []
        for y in sorted(d):
            for noc in sorted(d[y]):
                for e in d[y][noc]:
                    x.append( [y, noc] + sorted(e.items()) )
        return sorted(x)
    
    #----------------------------------------------------------
    @spjTestsuite.testcase(spjTestsuite.score_approx_kept,
                           score_kwargs = {'depth':2}
                           )
    def convert_to_dict_01(self):
        x = Testsuite.DATA['mock1.csv']        
        self.keep(Testsuite.dict_to_list(convert_to_dict(copy.deepcopy(x[0:2]))))
        # self.keep(Testsuite.dict_to_list(convert_to_dict(x[0:3])))
        
    #----------------------------------------------------------    
    @spjTestsuite.testcase(spjTestsuite.score_approx_kept,
                           score_kwargs = {'depth':2}
                           )
    def convert_to_dict_02(self):
        x = Testsuite.DATA['mock1.csv']        
        self.keep(Testsuite.dict_to_list(convert_to_dict(x)))
    #----------------------------------------------------------
    @spjTestsuite.testcase(spjTestsuite.score_approx_kept,
                           score_kwargs = {'depth':1}
                          )
    def get_medals_by_team_01(self):
        d = Testsuite.my_convert_to_dict(Testsuite.DATA['mock2.csv'])
        self.keep(sorted(get_medals_by_team(copy.deepcopy(d), '2010').items()))
        self.keep(sorted(get_medals_by_team(copy.deepcopy(d), '2014').items()))

    #----------------------------------------------------------
    @spjTestsuite.testcase(spjTestsuite.score_approx_kept,
                           score_kwargs = {'depth':1}
                          )
    def get_top_five_01(self):
        # {NOC: (g,s,b), ...}
        medals = {'D':(1,1,0), 'A':(1,1,0), 'B':(1,1,0), 'C':(1,1,1), 'E':(1,1,1)}
        self.keep(get_top_five(medals))
        
        medals = {'X':(0,0,1), 'W':(0,0,1),
                  'C':(0,1,0), 'F':(1,0,0), 'D':(1,0,1), 'A':(1,1,0), 'B':(1,1,1),
                  'Y':(0,0,1), 'Z':(0,0,1) }
        self.keep(get_top_five(medals))
        
        medals = {'Q':(9,2,0),
                  'F':(9,7,9), 'A':(9,9,9), 'C':(9,10,9), 'B':(9,2,1), 'D':(9,2,1), 'E':(9,10,8),
                  'P':(1,9,99)}
        self.keep(get_top_five(medals))        
        
        medals = {'Q':(3,3,3), 'X': (3,2,0)}
        medals.update({e:(3,2,1) for e in 'FKJSZBAMN'})
        medals['P'] = (3,2,0)
        self.keep(get_top_five(medals))        

    #----------------------------------------------------------
    def rand_data_01(NOCs, sports, start, end, n, seed):
        random.seed(seed)
        one = {'ID': '', 'Name':'A', 'Sex':'F', 'Age':'20', 'Height':'170', 'Weight':'65',
               'Team':'', 'NOC':'', 'Games':'', 'Year':'', 'Season':'Summer', 'City':'X',
               'Sport':'', 'Event':'Z', 'Medal':''}
        ID = 1
        d = {}
        MEDALS = ['Gold']*2 + ['Silver']*3 + ['Bronze']*4 + ['NA']
        for y in range(start, end+1, 2):
            y = str(y)
            d[y] = {}
            for noc in NOCs:
                d[y][noc] = []
                e = dict(one)
                e['Year'] = y
                e['NOC'] = e['Team'] = noc
                e['Games'] = y + ' ' + e['Season']
                for i in range(n):
                    e1 = dict(e)
                    e1['ID'] = str(ID)
                    e1['Medal'] = random.choice(MEDALS)
                    e1['Sport'] = random.choice(sports)
                    d[y][noc].append(e1)
                    ID += 1
        return d

    @spjTestsuite.testcase(spjTestsuite.score_exact_kept)
    def get_medals_trend_type(self):
        d = Testsuite.rand_data_01('A', 'P', 2004, 2004, 20, 1111)
        x = get_medals_trend(d, 'A', 2004, 2004)
        self.keep([type(x), type(x[0]), type(x[0][0])])
        
    @spjTestsuite.testcase(spjTestsuite.score_approx_kept,
                           score_kwargs = {'depth':1}
                          )
    def get_medals_trend_01(self):
        def y_to_str(x):
            return [(str(e[0]),) + e[1:] for e in x]

        # {NOC: (g,s,b), ...}
        d = Testsuite.rand_data_01('ABC', 'PQRST', 1998, 2008, 20, 1111)
        del d['2002']['B']
        del d['2004']['C']
        self.keep(y_to_str(get_medals_trend(copy.deepcopy(d), 'A', 2004, 2004)))
        self.keep(y_to_str(get_medals_trend(copy.deepcopy(d), 'B', 2000, 2008)))
        self.keep(y_to_str(get_medals_trend(copy.deepcopy(d), 'C', 2001, 2015)))
        
    #----------------------------------------------------------
    @spjTestsuite.testcase(spjTestsuite.score_exact_kept)
    def get_sports_type(self):
        # {NOC: (g,s,b), ...}
        d = Testsuite.rand_data_01('A', 'P', 2000, 2000, 5, 1111)
        self.keep(type(get_sports(d, 'A', '2000')))
        
    @spjTestsuite.testcase(spjTestsuite.score_approx_kept,
                           score_kwargs = {'depth':1}
                          )
    def get_sports_01(self):
        # {NOC: (g,s,b), ...}
        d = Testsuite.rand_data_01('ABC', 'ABCDEFGHIUJKLMN', 2000, 2004, 6, 1111)
        self.keep(sorted(get_sports(copy.deepcopy(d), 'A', '2000')))
        self.keep(sorted(get_sports(copy.deepcopy(d), 'B', '2002')))
        self.keep(sorted(get_sports(copy.deepcopy(d), 'C', '2004')))
        
    #----------------------------------------------------------
    @spjTestsuite.testcase(spjTestsuite.score_exact_kept,
                           score_kwargs = {'depth':1},
                          )
    def get_common_sports_01(self):
        # {NOC: (g,s,b), ...}
        d = Testsuite.rand_data_01('ABC', 'DEFGHIUJ', 2000, 2004, 8, 1111)
        d.update(Testsuite.rand_data_01('DE', 'XYZ', 2000, 2000, 6, 2222))
        s = get_common_sports(copy.deepcopy(d), set('AB'), '2002')
        self.keep([type(s)] + sorted(s))
        self.keep(sorted(get_common_sports(d, set('ABC'), '2004')))

    @spjTestsuite.testcase(spjTestsuite.score_exact_kept,
                           score_kwargs = {'depth':1},
                           add_sol_funcs=['get_sports'],
                          )
    def get_common_sports_02(self):
        # {NOC: (g,s,b), ...}
        d = Testsuite.rand_data_01('ABC', 'DEFGHIUJ', 2000, 2004, 8, 1111)
        d.update(Testsuite.rand_data_01('DE', 'XYZ', 2000, 2000, 6, 2222))
        s = get_common_sports(copy.deepcopy(d), set('AB'), '2002')
        self.keep([type(s)] + sorted(s))
        self.keep(sorted(get_common_sports(d, set('ABC'), '2004')))

6530293121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0KeyError('Year')
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0KeyError('Year')
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0TypeError("unhashable type: 'dict'")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0UnboundLocalError("local variable 'a' referenced before assignment")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0TypeError('string indices must be integers')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0TypeError('string indices must be integers')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'D' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'D' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'total' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0NameError("name 'total' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 820, 'const': 1057, 'code+const': 1877}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for k in data[1:]:
      a = {}
      b = a['Year']  
      c = a['NOC'] 
      for i in range(len(k)):
          a[data[0][i]] = k[i]
      if b not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[b] = {}
      if c not in athletes_by_Year_NOC[b]:
          athletes_by_Year_NOC[b][c] = []
      athletes_by_Year_NOC[b][c].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
      for m in athletes_by_Year_NOC[year]:
          medals[m] = [0,0,0]
          for l in athletes_by_Year_NOC[year][m]:
              if l['Medal'] == 'Bronze':
                  medals[l][2] += 1
              elif l['Medal'] == 'Silver':
                  medals[l][1] += 1
              elif l['Medal'] == 'Gold':
                  medals[l][0] += 1
      for n in medals:
         medals[n] = tuple(medals[n])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  array = []
  a = list(a)
  for a,b in medals.items():
      c = list(b) + [a]
      for i in range(3):
          c[i] *= -1
      array.append(c)
  array.sort()
  topfive = array[0:5]
  for i in range(len(topfive)):
      topfive[i] = tuple(topfive[3],topfive[0]*-1,topfive[1]*-1,topfive[2]*-1)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
      if str(i) in athletes_by_Year_NOC and get_medals_by_team:
          e = get_medals_by_team (athletes_by_Year_NOC,str(i)[NOC])
          trend.append(tuple(str(i),e[0],e[1],e[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in  athletes_by_Year_NOC:
      if D in athletes_by_Year_NOC[year]:
          for k in athletes_by_Year_NOC[year][D]:
              if k['Medal'] != 'NA':
                  sport.add(k['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  SUM = []
  for NOC in NOCs:
      total.append(get_sports(athletes_by_Year_NOC, NOCs, year))
  if len(total) != 0:
      sports = set(SUM[0])
      for i in SUM:
          sports = sports & i
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530314721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0TypeError('string indices must be integers')
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0TypeError('string indices must be integers')
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0AttributeError("'NoneType' object has no attribute 'items'")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[None[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', None3, None2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('None', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0TypeError("'NoneType' object is not subscriptable")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0TypeError("'NoneType' object is not iterable")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0
[<class 'NonseTypet'>]
get_sports_010.0TypeError("'NoneType' object is not iterable")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0TypeError("'NoneType' object is not iterable")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0TypeError("'NoneType' object is not iterable")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 366, 'const': 688, 'code+const': 1054}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  NOC = {}
  for e in data :
    id     = e[0] 
    name   = e[1]
    sex    = e[2]  
    age    = e[3] 
    height = e[4] 
    weight = e[5] 
    team   = e[6] 
    noc    = e[7] 
    games  = e[8] 
    year   = e[9] 
    season = e[10] 
    city   = e[11] 
    sport  = e[12] 
    event  = e[13] 
    medal  = e[14]
    if noc not in NOC : 
      NOC[noc] = [{'ID':id,'Name':name,'Sex':sex,'Age':age,'Height':height,'Weight':weight,'Team':team,'NOC':noc,'Games':games,'Year':year,'Season':season,'City':city,'Sport':sport,'Event':event,'Medal':medal}]
    else : 
      NOC[noc].append({'ID':id,'Name':name,'Sex':sex,'Age':age,'Height':height,'Weight':weight,'Team':team,'NOC':noc,'Games':games,'Year':year,'Season':season,'City':city,'Sport':sport,'Event':event,'Medal':medal})
  for e in NOC : 
    if e[year] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[year] = e
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  pass
#======================================
def get_top_five(medals):
  topfive = []
  pass
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  pass
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  pass
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  pass
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431511021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0IndexError('list index out of range')
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0IndexError('list index out of range')
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0NameError("name 'data' is not defined")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0NameError("name 'data' is not defined")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 2202, 'const': 2865, 'code+const': 5067}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    r = {}
    z = {}
    x1 = data[0]
    y = ''
    for e in x1:
        y += e
    a = y[0:2]
    b = y[2:6]
    c = y[6:9]
    d = y[9:12]
    e = y[12:18]
    f = y[18:24]
    g = y[24:28]
    h = y[28:31]
    i = y[31:36]
    j = y[36:40]
    k = y[40:46]
    l = y[46:50]
    m = y[50:55]
    n = y[55:60]
    o = y[60:]
    for i in range(1,85260):
        r[a] = data[i][0]
        r[b] = data[i][1]
        r[c] = data[i][2]
        r[d] = data[i][3]
        r[e] = data[i][4]
        r[f] = data[i][5]
        r[g] = data[i][6]
        r[h] = data[i][7]
        r[i] = data[i][8]
        r[j] = data[i][9]
        r[k] = data[i][10]
        r[l] = data[i][11]
        r[m] = data[i][12]
        r[n] = data[i][13]
        r[o] = data[i][14]
        pp = [r]
        z[h] = pp,data[i][7]
        athletes_by_Year_NOC[j] = z,data[i][9]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    athletes_by_Year_NOC = {}
    r = {}
    z = {}
    x1 = data[0]
    y = ''
    for e in x1:
        y += e
    a = y[0:2]
    b = y[2:6]
    c = y[6:9]
    d = y[9:12]
    e = y[12:18]
    f = y[18:24]
    g = y[24:28]
    h = y[28:31]
    i = y[31:36]
    j = y[36:40]
    k = y[40:46]
    l = y[46:50]
    m = y[50:55]
    n = y[55:60]
    o = y[60:]
    for i in range(1,85260):
        r[a] = data[i][0]
        r[b] = data[i][1]
        r[c] = data[i][2]
        r[d] = data[i][3]
        r[e] = data[i][4]
        r[f] = data[i][5]
        r[g] = data[i][6]
        r[h] = data[i][7]
        r[i] = data[i][8]
        r[j] = data[i][9]
        r[k] = data[i][10]
        r[l] = data[i][11]
        r[m] = data[i][12]
        r[n] = data[i][13]
        r[o] = data[i][14]
        pp = [r]
        z[h] = pp,data[i][7]
        athletes_by_Year_NOC[j] = z,data[i][9]
    for i in range(1,85260):
        year = data[i][9]
        a2 = athletes_by_Year_NOC
        a3 = data[i][14]
        dlf = data[i][7]    
    c1 = 0
    c2 = 0
    c3 = 0
    for e in a2:
        if year in a2 and a3 == 'NA':
            medals[dlf] = {}
        if year in a2 and a3 == 'Gold':
            c1 += 1
            medals[dlf] = (c1,c2,c3)
        if year in a2 and a3 == 'Silver':
            c2 += 1
            medals[dlf] = (c1,c2,c3)
        if year in a2 and a3 == 'Bronze':
            c3 += 1
            medals[dlf] = (c1,c2,c3)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medals = {}
    athletes_by_Year_NOC = {}
    r = {}
    z = {}
    x1 = data[0]
    y = ''
    for e in x1:
        y += e
    a = y[0:2]
    b = y[2:6]
    c = y[6:9]
    d = y[9:12]
    e = y[12:18]
    f = y[18:24]
    g = y[24:28]
    h = y[28:31]
    i = y[31:36]
    j = y[36:40]
    k = y[40:46]
    l = y[46:50]
    m = y[50:55]
    n = y[55:60]
    o = y[60:]
    for i in range(1,85260):
        r[a] = data[i][0]
        r[b] = data[i][1]
        r[c] = data[i][2]
        r[d] = data[i][3]
        r[e] = data[i][4]
        r[f] = data[i][5]
        r[g] = data[i][6]
        r[h] = data[i][7]
        r[i] = data[i][8]
        r[j] = data[i][9]
        r[k] = data[i][10]
        r[l] = data[i][11]
        r[m] = data[i][12]
        r[n] = data[i][13]
        r[o] = data[i][14]
        pp = [r]
        z[h] = pp,data[i][7]
        athletes_by_Year_NOC[j] = z,data[i][9]
    for i in range(1,85260):
        year = data[i][9]
        a2 = athletes_by_Year_NOC
        a3 = data[i][14]
        dlf = data[i][7]    
    c1 = 0
    c2 = 0
    c3 = 0
    for e in a2:
        if year in a2 and a3 == 'NA':
            medals[dlf] = {}
        if year in a2 and a3 == 'Gold':
            c1 += 1
            medals[dlf] = (c1,c2,c3)
        if year in a2 and a3 == 'Silver':
            c2 += 1
            medals[dlf] = (c1,c2,c3)
        if year in a2 and a3 == 'Bronze':
            c3 += 1
            medals[dlf] = (c1,c2,c3)
    for e in medals:
        x1,x2 = (e,),medals[e]
        x3 = x1+x2
        topfive += [x3]
    topfive.sort()
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532098521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 162, 'const': 168, 'code+const': 330}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(len(data)):
    if i==9:
      Year=data[i][9]
    if i==7:
      Noc=data[i][7]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530392621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.72
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '259'), ('City', 'BKK'), ('Event', 'GT BX'), ('Games', '20130 S'),
   ('Height', '16372'), ('ID', '41'), ('Medal', 'SiGolverd'), ('NOC', 'USA'), ('Name', 'AB'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'GT'), ('Team', 'USA'), ('Weight', '6058'),
   ('Year', '20120')],
  ['2012', 'THUSA', ('Age', '223'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '20102 S'),
   ('Height', '18067'), ('ID', '23'), ('Medal', 'Gold'), ('NOC', 'THUSA'), ('Name', 'CA'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THUSA'), ('Weight', '64'),
   ('Year', '20102')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0KeyError(0)
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[[('C', 1, 1, 1), ('E'], [(1, 1, 1), ('CA'], [(1, 1, 0), ('DB'], [(1, 1, 0), ('BD'], [(1, 1, 0)],
 [('AB']],
 [[(1, 1, 1), ('BA'], [(1, 1, 0), ('AD'], [(1, 0, 1), ('DF'], [(1, 0, 0), ('FC'], [(0, 1, 0)],
 [('C']],
 [[(9, 10, 9), ('CE'], [(9, 10, 8), ('EA'], [(9, 9, 9), ('AF'], [(9, 7, 9), ('FB'], [(9, 2, 1), ('D'], 9, 2, 1)],
 [[('Q', 3, 3, 3), ('QA'], 3, 2, 1), [('B', 3, 2, 1), ('ZF'], [3, 2, 1), ('J', 3, 2, 1), ('SK'], 3, 2, [1),
  ('M', 3, 2, 1), ('N'], [3, 2, 1), ('S', 3, 2, 1), ('MZ'], 3, 2, 1)]]
get_medals_trend_type0.0KeyError(0)
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0KeyError(0)
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'data' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'data' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0KeyError(0)
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0KeyError(0)
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1004, 'const': 1864, 'code+const': 2868}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  con = {}
  for m in range(1,len(data)):
    l = {}
    for j in range(15):
      l[data[0][j]] = data[m][j]
    con[data[m][7]] = [l]
    athletes_by_Year_NOC[data[m][9]] = con
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  ath = athletes_by_Year_NOC
  for i in range(len(ath)):
    if ath[i]['Year'] == '2000':
        coun_med.append([ath[i]['NOC'],ath[i]['Medal']])
  for i in range(len(coun_med)):
    if coun_med[i][0] not in medals:
        medals[coun_med[i][0]]=[0,0,0]
    if coun_med[i][1] == 'Gold': medals[coun_med[i][0]][0] += 1
    if coun_med[i][1] == 'Silver': medals[coun_med[i][0]][1] += 1
    if coun_med[i][1] == 'Bronze': medals[coun_med[i][0]][2] += 1
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  for e in medals:
    topfive.append([medals[e],e])
  topfive.sort()
  topfive = topfive[::-1][:5:]
  idk = []
  for i in range(len(topfive)):
    idk.append((topfive[i][1], topfive[i][0][0], topfive[i][0][1], topfive[i][0][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  ath = athletes_by_Year_NOC
  for i in range(len(ath)):
    for j in range(len(ath[0])):
        if NOC == ath[i]['NOC']:
            trend = []
            for m in range(2001,2015):
                if m == ath[i]['Year']:
                    q = get_medals_by_team(ath[i],m)
                    trend.append((NOC,q[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  ath = athletes_by_Year_NOC
  for i in range(len(ath)):
    for j in range(len(data[0])):
      if NOC == ath[i]['NOC'] and year == ath[i]['Year'] and        (ath[i]['Medal'] == 'Gold' or ath[i]['Medal'] == 'Silver' or ath[i]['Medal'] == 'Bronze'):
        sports.add(ath[i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  ath = athletes_by_Year_NOC
  for i in range(len(ath)):
    for e in NOCs:
      if e == ath[i]['NOC'] and year == ath[i]['Year'] and            (ath[i]['Medal'] == 'Gold' or ath[i]['Medal'] == 'Silver' or ath[i]['Medal'] == 'Bronze'):
          sports.add(ath[i]['Sport'])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530301521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0KeyError('Year')
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0KeyError('Year')
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0KeyError('medals')
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0TypeError('tuple expected at most 1 argument, got 4')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0KeyError('medals')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0KeyError('medals')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0TypeError("unhashable type: 'set'")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0TypeError("unhashable type: 'set'")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1128, 'const': 1086, 'code+const': 2214}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  athletes_personnel_data = [{}]*(len(data)-1)
  for i in range(len(data)-1) :
    for j in range(15) :
      athletes_personnel_data[i][data[0][j]] = data[i+1][j]
  #athletes_personnel_dataบนนี้คือlistของข้อมูลนักกีฬาทั้งหมดโดยที่ยังไม่มีการคัดแยกประเทศหรือปีที่แข่ง
  big_data = {}
  for i in range(len(athletes_personnel_data)) :
    if athletes_personnel_data[i]["Year"] not in big_data :
      big_data[athletes_personnel_data[i]["Year"]] = {}
    if athletes_personnel_data[i]["NOC"] not in big_data["Year"] :
      big_data[athletes_personnel_data[i]["Year"]]["NOC"] = []
    big_data[athletes_personnel_data[i]["Year"]]["NOC"] = athletes_personnel_data[i]
  athletes_by_Year_NOC = big_data
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year] :
    medals[i] = [0,0,0]
    for j in athletes_by_Year_NOC[year][i] :
      if j["medals"] == "Bronze" :
        medals[i][2] += 1
      elif j["medals"] == "Silver" :
        medals[i][1] += 1
      elif j["medals"] == "Gold" :
        medals[i][0] += 1
  for i in medals :
    medals[i] = (medals[i][0],medals[i][1],medals[i][2])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all_medals = []
  for i in medals :
    NOC = i
    NOC_medals = medals[i]
    all_medals.append([NOC_medals,NOC])
  all_medals.sort()
  all_medals_reversed = []
  for i in range(len(all_medals)) :
    all_medals_reversed.append(all_medals[-i-1])
  for i in range(4) :
    topfive.append(tuple(all_medals_reversed[i][1],all_medals_reversed[i][0][0],all_medals_reversed[i][0][1],all_medals_reversed[i][0][2]))
  topfive.append(tuple(all_medals_reversed[4][1],all_medals_reversed[4][0][0],all_medals_reversed[4][0][1],all_medals_reversed[4][0][2]))
  for k in range(5,len(all_medals_reversed)) :
    if all_medals_reversed[k][0] == all_medals_reversed[k-1][0] :
      topfive.append(tuple(all_medals_reversed[k][1],all_medals_reversed[k][0][0],all_medals_reversed[k][0][1],all_medals_reversed[k][0][2]))
    else : 
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1) :
    if year%2 == 0 :
      if NOC in get_medals_by_team(athletes_by_Year_NOC,str(year)) :
        medal = get_medals_by_team(athletes_by_Year_NOC,str(year))[NOC]
        k = tuple(str(year),medal[0],medal[1],medal[2])
        trend.append(k)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  for i in athletes_by_Year_NOC[year][NOC]:
    if not i['Medal'] == 'NA':
      sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  every_country_sport_set = []
  if year in athletes_by_Year_NOC :
    for i in NOCs :
      every_country_sport_set.append(get_sports(athletes_by_Year_NOC,i, year))
  intersect_set = []
  if len(every_country_sport_set) > 0 :
    s = every_country_sport_set[0] 
    for i in range(len(every_country_sport_set)-1) :
      s = s.intersection(every_country_sport_set[i+1]) 
  sports.add(s)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530425721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0NameError("name 'a' is not defined")
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0NameError("name 'a' is not defined")
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 458, 'const': 538, 'code+const': 996}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    c = []
    for i in range(1,len(data)):
        d = {}
        for j in range(len(data[0])):
            d[data[0][j]] = data[i][j]
        c.append(d)
    for e in c:
        q = {}
        q[e["NOC"]] = [e]
        if e["Year"] not in a:
            a[e["Year"]] = q
        else:
            if e["NOC"] not in a[e["Year"]]:
                a[e["Year"]] = q
            else:
                a[e["Year"]][e["NOC"]].append(e)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for i in athletes_by_Year_NOC[year]:
        Gold = 0
        Silver = 0
        Bronze = 0
        NA = 0
        for j in range(len(athletes_by_Year_NOC[year][i])):
            x = athletes_by_Year_NOC[year][i][j]["Medal"]
            if x == "Gold":
                Gold += 1
            elif x == "Silver":
                Silver += 1
            elif x == "Bronze":
                Bronze += 1
            else:
                NA += 1
        c = (Gold,Silver,Bronze)
        medals[i] = c
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431543121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'T XBKK'), ('Event', 'BKKT X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'TGold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'GoldSummer'), ('Sex', 'M'),
   ('Sport', 'SummerT'), ('Team', 'USA'), ('Weight', '58')],
  ['Year', 'Team', ('Age', 'Age'), ('City', 'Event'), ('Event', 'City'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('MYedal', 'Sport'), ('Name', 'Name'), ('Season', 'Medal'),
   ('Sex', 'Sex'), ('Sport', 'Season'), ('Team', 'NOC'), ('Weight', 'Weight2010')]]]
convert_to_dict_020.34
[[['2010', 'THA', ('Age', '22'), ('City', 'G ABKK'), ('Event', 'BKKG A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'GoldSummer'), ('Sex', 'M'),
   ('Sport', 'SummerG'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'T XBKK'), ('Event', 'BKKT X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'TGold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'GoldSummer'), ('Sex', 'M'),
   ('Sport', 'SummerT'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'G ABKK'), ('Event', 'BKKG A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'GoldSummer'), ('Sex', 'M'),
   ('Sport', 'SummerG'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'G BKK'), ('Event', 'G BKK'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'GSilver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Silvummer'),
   ('Sex', 'M'), ('Sport', 'SummerG'), ('Team', 'USA'), ('Weight', '60')],
  ['Year', 'Team', ('Age', 'Age'), ('City', 'Event'), ('Event', 'City'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('MYedal', 'Sport'), ('Name', 'Name'), ('Season', 'Medal'),
   ('Sex', 'Sex'), ('Sport', 'Season'), ('Team', 'NOC'), ('Weight', 'Weight2012')]]]
get_medals_by_team_010.0TypeError('string indices must be integers')
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 01, 05, 012)],
 [('2000', 0, 0, 0), ('2001', 0, 0, 0), ('2002', 0, 0, 0)4, ('2003', 0, 05, 08), ('2004', 0, 0, 0),
  ('2005', 06, 0, 07), ('2006', 0, 0, 0), ('2007', 06, 03, 09), ('2008', 0, 07, 09)],
 [('2001', 0, 0, 0), ('2002', 0, 0, 0), ('2003', 0, 0, 0), ('2004', 0, 07, 07), ('2005', 0, 0, 0),
  ('2006', 0, 0, 0)5, ('2007', 0, 0, 07), ('2008', 0, 0, 0), ('2009', 0, 0, 0)4, ('2010', 0, 0, 0),
  ('2011', 0, 0, 0), ('2012', 0, 0, 0), ('2013', 0, 0, 0), ('2014', 0, 0, 0), ('2015', 0, 0, 0)]]
get_sports_type0.0TypeError('string indices must be integers')
[<class 'set'>]
get_sports_010.0TypeError('string indices must be integers')
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0TypeError('list indices must be integers or slices, not str')
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0TypeError('list indices must be integers or slices, not str')
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 960, 'const': 1815, 'code+const': 2775}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for athlete in data:
        year = athlete[9]
        NOC = athlete[6]
        athlete_dict = {
            'ID': athlete[0],
            'Name': athlete[1],
            'Sex': athlete[2],
            'Age': athlete[3],
            'Height': athlete[4],
            'Weight': athlete[5],
            'Team': athlete[7],
            'Games': athlete[8],
            'Sport': athlete[10],
            'Event': athlete[11],
            'Medal': athlete[12],
            'City': athlete[13],
            'Season': athlete[14]
        }
        if year in athletes_by_Year_NOC:
            if not(NOC in athletes_by_Year_NOC[year]):
                athletes_by_Year_NOC[year][NOC] = [athlete_dict]
            else:
                athletes_by_Year_NOC[year][NOC].append(athlete_dict)
        else:
            athletes_by_Year_NOC[year] = {NOC: [athlete_dict]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC, athletes in athletes_by_Year_NOC.items():
        for athlete in athletes:
            if  year== athlete['Year']:
                medal_type = athlete['Medal']
                if NOC not in medals:
                    medals[NOC] = [0, 0, 0]
                if medal_type == 'Gold':
                    medals[NOC][0] += 1
                elif medal_type == 'Silver':
                    medals[NOC][1] += 1
                elif medal_type == 'Bronze':
                    medals[NOC][2] += 1
    medals = {k: tuple(v) for k, v in medals.items()}
    return medals
#======================================
def get_top_five(medals):
    top_five = []
    for NOC, medal_counts in sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0])):
        if len(top_five) < 5 or medal_counts == top_five[-1][1:]:
            top_five.append((NOC,) + medal_counts)
            top_five.sort(key=lambda x: (-x[1], -x[2], -x[3], x[0]))
            top_five = top_five[:5]
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        if not(year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]):
            trend.append((str(year), 0, 0, 0))
        else:
            gold = athletes_by_Year_NOC[year][NOC]['Gold']
            silver = athletes_by_Year_NOC[year][NOC]['Silver']
            bronze = athletes_by_Year_NOC[year][NOC]['Bronze']
            trend.append((str(year), gold, silver, bronze))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if not(year not in athletes_by_Year_NOC):
        pass
    else:
        return sports
    if NOC not in athletes_by_Year_NOC[year]:
        return sports
    for athlete in athletes_by_Year_NOC[year][NOC]:
        for event in athlete['Event']:
            sports.add(event['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    medal_sports = []
    for noc in NOCs:
        if year in athletes_by_Year_NOC and noc in athletes_by_Year_NOC[year]:
            medal_sports.append(athletes_by_Year_NOC[year][noc]['Medal'].keys())
    if not(medal_sports):
        pass
    else:
        sports = set.intersection(*medal_sports)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530369221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.18
[[['2010', 'THA', ('Age', '252'), ('City', 'BKK'), ('Event', 'G BA'), ('Games', '20130 S'),
   ('Height', '16380'), ('ID', '42'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weilght', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '604'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0AttributeError("'dict_values' object has no attribute 'sorted'")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 416, 'const': 489, 'code+const': 905}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  infn={}
  for i in range(len(data[0])):
    for j in range(1,len(data)):
      infn[data[0][i]]=data[j][i]
      NOC=data[j][7]
      year=data[j][9]
      athletes_by_Year_NOC[year]={NOC:[infn]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  nat=athletes_by_Year_NOC.values().sorted()
  gold=0
  silver=0
  bronze=0
  for i in range(len(nat)):
    if nat[i]==nat[i+1]:
      if nat[i].values()['Medal']=='Gold':
        gold+=1
      elif nat[i].values()['Medal']=='Silver':
        silver+=1
      elif nat[i].values()['Medal']=='Bronze':
        bronze+=1
    else:
      medals[nat[i]]=(gold,silver,bronze)
      nat[i+1]=nat[i]
      gold=0
      silver=0
      bronze=0
      return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431512721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.72
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '259'), ('City', 'BKK'), ('Event', 'GT BX'), ('Games', '20130 S'),
   ('Height', '16372'), ('ID', '41'), ('Medal', 'SiGolverd'), ('NOC', 'USA'), ('Name', 'AB'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'GT'), ('Team', 'USA'), ('Weight', '6058'),
   ('Year', '20120')],
  ['2012', 'THUSA', ('Age', '223'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '20102 S'),
   ('Height', '18067'), ('ID', '23'), ('Medal', 'Gold'), ('NOC', 'THUSA'), ('Name', 'CA'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THUSA'), ('Weight', '64'),
   ('Year', '20102')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 204, 'const': 297, 'code+const': 501}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
#  athletes_by_Year_NOC = {}  # <-- IndentationError
#  Y={}  # <-- IndentationError
    athletes_by_Year_NOC = {}
    Y={}
    N={}
    k={}
    for j in range(1,len(data)):
       for i in range(15):
           k[data[0][i]]=data[j][i]
       N[k["NOC"]]=[k]
       athletes_by_Year_NOC[k["Year"]]= N
       k = {}
#  return athletes_by_Year_NOC # <-- IndentationError
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530312421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_010.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 682, 'const': 1039, 'code+const': 1721}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data2 = data
  for pos in data2:
    if pos[9] not in athletes_by_Year_NOC:
      mydict = {'ID':pos[0], 'Name':pos[1], 'Sex':pos[2], 'Age':pos[3], 'Height':pos[4], 'Weight':pos[5], 'Team':pos[6], 'NOC':pos[7], 'Games':pos[8], 'Year':pos[9], 'Season':pos[10], 'City':pos[11], 'Sport':pos[12], 'Event':pos[13], 'Medal':pos[14]}
      athletes_by_Year_NOC[pos[9]] = {pos[7]:[mydict]}
    else:
      mydict = {'ID':pos[0], 'Name':pos[1], 'Sex':pos[2], 'Age':pos[3], 'Height':pos[4], 'Weight':pos[5], 'Team':pos[6], 'NOC':pos[7], 'Games':pos[8], 'Year':pos[9], 'Season':pos[10], 'City':pos[11], 'Sport':pos[12], 'Event':pos[13], 'Medal':pos[14]}
      if pos[7] not in athletes_by_Year_NOC[pos[9]]:
        athletes_by_Year_NOC[pos[9]][pos[7]] = [mydict]
      else:
        athletes_by_Year_NOC[pos[9]][pos[7]].append(mydict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  #by_team = athletes_by_Year_NOC[year]
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  #md,s,t,a = [],[],[],{}
  #for i,j in medals.items():
  #  md.append((i,j))
  #md.sort()
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  x = range(start,end+1)
  lst = list(x)
  for i in lst:
    if str(i) in athletes_by_Year_NOC:
      md = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in md:
        trend.append(str[i],md[NOC][0],md[NOC][1],md[NOC][2])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    val = athletes_by_Year_NOC[year][NOC]
    for id in range(len(val)):
      if val[id]["Medal"] == "Bronze":
        sports.add(val[id]["Sport"])
      if val[id]["Medal"] == "Silver":
        sports.add(val[id]["Sport"])
      if val[id]["Medal"] == "Gold":
        sports.add(val[id]["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530417721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0AttributeError("'str' object has no attribute 'items'")
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0AttributeError("'str' object has no attribute 'items'")
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('A2004', 1, 5, 12)], [('B2000', 4, 5, 8), ('B2004', 5, 6, 7), ('B2006', 6, 3, 9), ('B2008', 0, 7, 9)],
 [('C2002', 3, 7, 7), ('C2006', 5, 7, 7), ('C2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 690, 'const': 897, 'code+const': 1587}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(len(data)):
    if i+1 >= len(data):
      break
    year = data[i+1][9]
    noc = data[i+1][7]
    ath = {}
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    for j in range(len(data[0])):
      ath[data[0][j]] = data[i+1][j]
    athletes_by_Year_NOC[year][noc] = ath
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {}
  for e in athletes_by_Year_NOC[year]:
    medal = [0,0,0]
    for i in range(len(athletes_by_Year_NOC[year][e])):
      med = athletes_by_Year_NOC[year][e][i]['Medal']
      if med == 'Gold':
        medal[0]+=1
      if med == 'Silver':
        medal[1]+=1
      if med == 'Bronze':
        medal[2]+=1
    medals[e] = tuple(medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a = sorted(medals.items(),key=lambda x:x[1],reverse = True)
  c = 5
  for i in range(4,len(a)):
    if a[i][1] == a[i+1][1]:
      c+=1
    else: break
  return a[0:c]
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start %2 != 0:
    start +=1
  if end % 2 ==0:
    end+=1
  for i in range(start,end,2):
    medal = []
    if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]:
      a = get_medals_by_team(athletes_by_Year_NOC, str(i))
      med = a[NOC]
      medal = [NOC] + list(med)
      trend.append(tuple(medal))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530419021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0NameError("name 'get_medals_by_team' is not defined")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0NameError("name 'get_top_five' is not defined")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'get_medals_by_team' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'get_medals_by_team' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'get_sports' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'get_sports' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'get_sports' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 430, 'const': 304, 'code+const': 734}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        athlete={}
        for k in range(len(data[0])): 
            athlete[data[0][k]]=data[i][k]
        NOC=data[i][7]
        year=data[i][9]
        if year in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][NOC].append(athlete)
            else:
                athletes_by_Year_NOC[year][NOC]=[athlete]
        else:
            athletes_by_Year_NOC[year]={NOC:[athlete]}
    return athletes_by_Year_NOC
#======================================
# SyntaxError 
# def get_medals_by_team(athletes_by_Year_NOC, year):
#     medals = {}
#     inf=athletes_by_Year_NOC(year)
#     for e in inf:
#         G=0
#         S=0
#         B=0
#         for k in range(len(inf[e])):
#             if inf[e][k][14]="":
#                 G+=1
#             elif inf[e][k][14]="":
#                 S+=1            
#             elif inf[e][k][14]="":
#                 B+=1
#         medal[e]=(G,S,B)
#         
#     return medals
# 
# 
# #======================================
# def get_top_five(medals):
#     topfive = []
#     Result=[]
#     for e in medal:
#         a=[]
#         for i in range(3):
#             a+=medal[e][i]
#         a+=e
#         Result+=[a]
#     Result.sort()
#     Result=Result[::-1]
#     Result2=[]
#     for n in range(len(Result)):
#         if 0<=n<=3:
#             Result2+=[Result[n]]
#         elif n>=4 and Result[n][0]=Result[n+1][0] and Result[n][1]=Result[n+1][1] and Result[n][2]=Result[n+1][2]:
#             Result2+=[Result[n]]
#         else:
#             Result2+=[Result[n]]
#             break
#     Result3=[]
#     for i in range(len(Result2)):
#         a=[]
#         if i==len(Result2):
#             a+=[Result2[i]]
#             Result3+=a[::-1]
#         elif Result2[i][0]=Result2[i+1][0] and Result2[i][1]=Result2[i+1][1] and Result2[i][2]=Result2[i+1][2]:
#             a+=[Result2[i]]
#         else:
#             a+=[Result2[i]]
#             Result3+=a[::-1]
#             a=[]
#     for k in range(len(Result3)):
#         topfive+=[(Result3[k][0],Result3[k][1],Result3[k][2],Result3[k][3])]
#     return topfive
# 
# 
# #======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    if not start%2==0:
        start+=1
    else:
        pass
    trend = []
    for k in range(start,end+1,2):
        if not str(k) in athletes_by_Year_NOC:
            pass
        else:
            if NOC in get_medals_by_team(athletes_by_Year_NOC, str(k)):
                ymedal=get_medals_by_team(athletes_by_Year_NOC, str(k))[NOC]
                trend+=[(str(k),ymedal[0],ymedal[1],ymedal[2])]
    return trend
#======================================
# IndentationError
#def get_sports(athletes_by_Year_NOC, NOC, year):
#    sports = set()
#    if not year in athletes_by_Year_NOC:
#    else:
#        if NOC in athletes_by_Year_NOC[year]:
#            for d in athletes_by_Year_NOC[year][NOC]:
#                if not d["Medal"]="NA":
#                    sports.add(d["Sport"])#
#
#    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    a=[]
    for d in NOCs:
        m=get_sports(athletes_by_Year_NOC, d, year)
        a+=[m]
    x=set()
    y=x.union(a[0])
    for k in range(1,len(a)):
        y=y&(a[k])
    return y

6532184821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.34
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('XJ', 3, 2, 1), ('K', 3, 2, 01),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('20040', 04, 5, 8), ('2004', 05, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 07, 9)],
 [('2002', 03, 07, 07), ('2006', 05, 07, 07), ('2008', 04, 03, 012)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 898, 'const': 1167, 'code+const': 2065}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    d0 = data[0]
    c = d0.index('Year')
    n = d0.index('NOC')
    for i in data[1:]:
        x ={}
        for m in range(len(data[0])):
            x[data[0][m]] = i[m]
        if i[c] in athletes_by_Year_NOC:
            if i[n] in athletes_by_Year_NOC[i[c]]:
                athletes_by_Year_NOC[i[c]][i[n]] += [x]
            else:
                athletes_by_Year_NOC[i[c]][i[n]] = [x]
        else:
            athletes_by_Year_NOC[i[c]] = {}
            athletes_by_Year_NOC[i[c]][i[n]] = []
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year]:
      nm = [0,0,0,]
      for i in athletes_by_Year_NOC[year][NOC]:
          if (i['Medal'] == 'Gold'):
              nm[0] += 1
          else:
              if (i['Medal'] == 'Silver'):
                  nm[1] += 1
              else:
                  if (i['Medal'] == 'Bronze'):
                      nm[2] += 1
      medals[NOC] = tuple(nm)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  trophy = {}
  for NOC in medals:
      nm = medals[NOC]
      if(not nm in trophy):
          trophy[nm] = list()
          trophy[nm].append(NOC)
  for rank in sorted(trophy.keys())[::-1]:
      if(len(topfive) >= 5):
          break
      for NOC in sorted(trophy[rank]):
          topfive.append(tuple([NOC,rank[1],rank[2]]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start+1, end):
      m = {'G': 0, 'S':0, 'B':0}
      a = athletes_by_Year_NOC
      if str(year) in a and NOC in a[str(year)]:
          for player in a[str(year)][NOC]:
              if 'G' in player:
                  m['G'] = m['G'] + player['G']
              if 'S' in player:
                  m['S'] = m['S'] + player['S']
              if 'B' in player:
                  m['B'] = m['B'] + player['B']
          trend.append((str(year), m['G'], m['S'], m['B']))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  a = athletes_by_Year_NOC
  if year in a and NOC in a[year]:
      for players in a[year][NOC]:
          if players['Medal'] != 'NA':
              sports.add(players['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sn = list()
  for sportset in sn:
      sports = sports & sportset
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6430292421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['Year2010', 'NOCUSA', ('Age', 'Age29'), ('City', 'CityBKK'), ('Event', 'EventT X'), ('Games', 'Games2010 S'),
   ('Height', 'Height172'), ('ID', 'ID1'), ('Medal', 'MedaGold'), ('NOC', 'NOCUSA'), ('Name', 'NameB'),
   ('Season', 'Summeasonr'), ('Sex', 'SexM'), ('Sport', 'SportT'), ('Team', 'TeamUSA'), ('Weight', 'Weight58'),
   ('Year', 'Year2010')]]]
convert_to_dict_020.0
[[['Y2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Garmes', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'CityBKK'), ('Event', 'EventT X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
 ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('HWeight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', 'ID3'), ('Medal', 'MedaGold'), ('NOC', 'NOCUSA'), ('Name', 'NameA'),
   ('Season', 'Summeasonr'), ('Sex', 'SexM'), ('Sport', 'G'), ('Team', 'USporA'), ('Weight', '64'),
   ('TYeamr', '2012')],
  ['2012', 'USA', ('TAge', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('WHeight', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', 'Year2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.5
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'E', 'F', 'H', 'I', 'J', 'U'], ['D', 'E', 'F', 'G', 'H', 'I', 'J', 'U']]
get_common_sports_020.0
[[<class 'set'>, 'E', 'F', 'H', 'I', 'J', 'U'], ['D', 'E', 'F', 'G', 'H', 'I', 'J', 'U']]
bytecount: {'code': 992, 'const': 1700, 'code+const': 2692}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data:
        year = e[9]
        noc = e[7]
        athlete_data = {
            'ID': e[0],
            'Name': e[1],
            'Sex': e[2],
            'Age': e[3],
            'Height': e[4],
            'Weight': e[5],
            'Team': e[6],
            'NOC': e[7],
            'Games': e[8],
            'Year': e[9],
            'Season': e[10],
            'City': e[11],
            'Sport': e[12],
            'Event': e[13],
            'Medal': e[14]
        }
        if year in athletes_by_Year_NOC:
            if noc in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][noc].append(athlete_data)
            else:
                athletes_by_Year_NOC[year][noc] = [athlete_data]
        else:
            athletes_by_Year_NOC[year] = {noc: [athlete_data]}  
        return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
        year_data = athletes_by_Year_NOC[year]
        for i in year_data:
            medals[i] = (0, 0, 0)
            for k in year_data[i]:
                medal = k['Medal']
                if medal == 'Gold':
                    medals[i] = (medals[i][0] + 1, medals[i][1], medals[i][2])
                elif medal == 'Silver':
                    medals[i] = (medals[i][0], medals[i][1] + 1, medals[i][2])
                elif medal == 'Bronze':
                    medals[i] = (medals[i][0], medals[i][1], medals[i][2] + 1)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start+1, end):
        if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]:
            medals = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
            for j in athletes_by_Year_NOC[str(i)][NOC]:
                medal = j['Medal']
                if medal == 'Gold':
                    medals['Gold'] += 1
                elif medal == 'Silver':
                    medals['Silver'] += 1
                elif medal == 'Bronze':
                    medals['Bronze'] += 1
            trend.append((str(i), medals['Gold'], medals['Silver'], medals['Bronze']))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
        return sports
  athletes = athletes_by_Year_NOC[year][NOC]
  for e in athletes:
        if e['Medal'] != 'NA':
            sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    for k in NOCs:
        if k in athletes_by_Year_NOC.get(year, {}):
            for e in athletes_by_Year_NOC[year][k]:
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    sports1 = set()
    for k in sports:
        medals = set()
        for e in NOCs:
            if e in athletes_by_Year_NOC.get(year, {}):
                for a in athletes_by_Year_NOC[year][e]:
                    if a['Medal'] != 'NA' and a['Sport'] == k:
                        medals.add(e)
        if len(medals) == len(NOCs):
            sports1.add(k)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530440021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0NameError("name 'athletes_by_Year_NOC' is not defined")
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0NameError("name 'athletes_by_Year_NOC' is not defined")
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.57
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('BA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('MB', 3, 2, 1), ('AF', 3, 2, 1), ('BJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('SM', 3, 2, 1), ('JN', 3, 2, 1), ('KS', 3, 2, 1), ('FZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'sport' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'sport' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'sport' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 736, 'const': 968, 'code+const': 1704}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  i_year = data[0].index('Year')
  i_NOC = data[0].index('NOC')
  for d in data :
      year = d[i_year]
      NOC = d[i_NOC]
      if year not in athletes_by_Year_NOC :
          athletes_by_Year_NOC[year] = {}
      if NOC not in athletes_by_Year_NOC[year] :
          athletes_by_Year_NOC[year][NOC] = []
      athletes_by_Year_NOC[year][NOC].append({data[0][i]:d[i] for i in range(len(data[0]))})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  noc_by_year = athletes_by_Year_NOC[year]
  medals = {}
  for noc in noc_by_year :
      medal = {'Gold':0,'Silver':0,'Bronze':0}
      for n in noc_by_year[noc] :
          if n['Medal'] != 'NA' :
              medal[n['Medal']] += 1
      medals[noc] = (medal['Gold'],medal['Silver'],medal['Bronze'])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  key_medals = {}
  for n,m in medals.items() :
      if m not in key_medals : 
          key_medals[m] = []
      key_medals[m].append(n)
  count = 0
  for m,n in sorted(key_medals.items())[::-1] :
      for c in n[::-1] :
          topfive.append((c,)+m)
      count += len(n)
      if count >= 5 :
          break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start,end+1) :
      y = str(y)
      if y in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[y] :
          trend.append((y,)+get_medals_by_team(athletes_by_Year_NOC, y)[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year] :
      return set()
  noc = athletes_by_Year_NOC[year][NOC]
  for p in noc :
      if p['Medal'] != 'NA' :
          sport.add(p['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sport = get_sports(athletes_by_Year_NOC, sorted(NOCs)[0], year)
  for noc in sorted(NOCs)[1:] :
      sport &= get_sports(athletes_by_Year_NOC, noc, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530439521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'),
   ('NOC',
    ['1', 'B', 'M', '29', '172', '58', 'USA', 'USA', '2010 S', '2010', 'Summer', 'BKK', 'T', 'T X',
     'Gold']),
   ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'),
   ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'),
   ('NOC',
    ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season',
     'City', 'Sport', 'Event', 'Medal']),
   ('Name', 'Name'), ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'),
   ('Weight', 'Weight'), ('Year', 'Year')]]]
convert_to_dict_020.7
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'),
   ('NOC',
    ['2', 'C', 'M', '22', '180', '64', 'THA', 'THA', '2010 S', '2010', 'Summer', 'BKK', 'G', 'G A',
     'Gold']),
   ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'),
   ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'),
   ('NOC',
    ['1', 'B', 'M', '29', '172', '58', 'USA', 'USA', '2010 S', '2010', 'Summer', 'BKK', 'T', 'T X',
     'Gold']),
   ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'),
   ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'),
   ('NOC',
    ['3', 'A', 'M', '23', '167', '64', 'USA', 'USA', '2012 S', '2012', 'Summer', 'BKK', 'G', 'G A',
     'Gold']),
   ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'),
   ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'),
   ('NOC',
    ['4', 'A', 'M', '25', '163', '60', 'USA', 'USA', '2013 S', '2012', 'Summer', 'BKK', 'G', 'G B',
     'Silver']),
   ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'),
   ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'),
   ('NOC',
    ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season',
     'City', 'Sport', 'Event', 'Medal']),
   ('Name', 'Name'), ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', ' ... (more)
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('EC', (1, 1, 1)), ('CE', (1, 1, 1)), ('DA', (1, 1, 0)), ('B', (1, 1, 0)), ('AD', (1, 1, 0))],
 [('B', (1, 1, 1)), ('A', (1, 1, 0)), ('D', (1, 0, 1)), ('F', (1, 0, 0)), ('C', (0, 1, 0))],
 [('C', (9, 10, 9)), ('E', (9, 10, 8)), ('A', (9, 9, 9)), ('F', (9, 7, 9), ('B', 9, 2, 1), ('D', (9, 2, 1))],
 [('Q', (3, 3, 3)), ('ZA', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('SJ', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1)), ('MZ', (3, 2, 1))]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0KeyError(2002)
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F', 'H', 'J', 'U'], ['D', 'F', 'G', 'H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F', 'H', 'J', 'U'], ['D', 'F', 'G', 'H', 'I']]
bytecount: {'code': 770, 'const': 1871, 'code+const': 2641}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for a in data:
        year = a[9]
        noc = a[7]
        athlete_data = {'ID': a[0], 'Name': a[1], 'Sex': a[2], 'Age': a[3], 'Height': a[4], 'Weight': a[5], 'Team': a[6], 'NOC': a, 'Games': a[8], 'Year': year, 'Season': a[10], 'City': a[11], 'Sport': a[12], 'Event': a[13], 'Medal': a[14]}
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(athlete_data)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for noc, athletes in athletes_by_Year_NOC[year].items():
        gold, silver, bronze = 0, 0, 0
        for athlete in athletes:
            medal = athlete['Medal']
            if medal == 'Gold':
                gold += 1
            elif medal == 'Silver':
                silver += 1
            elif medal == 'Bronze':
                bronze += 1
        medals[noc] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    temp = [(medals[noc], noc) for noc in medals]
    temp.sort(reverse = True)
    topfive = [(noc, medal) for medal, noc in temp][0:5]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start + 1, end):
        if year % 2 == 0:
            medals = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
            for noc in athletes_by_Year_NOC[year][NOC]:
                if noc['Medal'] != 'NA':
                    medals[noc['Medal']] += 1
            trend.append(year, medals['Gold'], medals['Silver'], medals['Bronze'])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    athletes = athletes_by_Year_NOC.get(year, {}).get(NOC, [])
    for athlete in athletes:
        medal = athlete.get('Medal', 'NA')
        if medal != 'NA':
            sports.add(athlete['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    for NOC in NOCs:
        if NOC in athletes_by_Year_NOC[year]:
            stype = set(medal['Sport'] for medal in athletes_by_Year_NOC[year][NOC] if medal['Medal'] != 'NA')
            if not sports:
                sports = stype
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532189021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.71
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0TypeError("'NoneType' object is not subscriptable")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0TypeError("'NoneType' object is not iterable")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0
[<class 'NonseTypet'>]
get_sports_010.0TypeError("'NoneType' object is not iterable")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0TypeError("'NoneType' object is not iterable")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0TypeError("'NoneType' object is not iterable")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 706, 'const': 896, 'code+const': 1602}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    ay = []
    for i in range(1,len(data)):
        if data[i][9] not in ay:
            ay.append(data[i][9])
        elif data[i][9] in ay:
            continue
    years = sorted(ay)
    newlist = []
    for c in range(1,len(data)):
        dtd = dict(zip(data[0],data[c]))
        newlist.append(dtd)
    k_outer, k_inner = 'Year', 'NOC'
    athletes_by_Year_NOC = {k: {d.get(k_inner): [] for d in newlist if k==d.get(k_outer)} for k in {r.get(k_outer) for r in newlist}}
    for e in newlist:
        athletes_by_Year_NOC[e.get(k_outer)][e.get(k_inner)].append(e)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    nati = []
    willap = [0,0,0]
    for n in athletes_by_Year_NOC[year]:
        nati.append(n)
        willap = [0,0,0]
        for r in range(len(athletes_by_Year_NOC[year][n])):
            mm = athletes_by_Year_NOC[year][n][r]['Medal']
            if mm == 'Gold':
                willap[0] += 1
            elif mm == 'Silver':
                willap[1] += 1
            elif mm == 'Bronze':
                willap[2] += 1
            elif mm == 'NA':
                continue
        medals[n] = tuple(willap)
    return medals
#======================================
def get_top_five(medals):
    allsort = sorted(medals.items(), key=lambda x:x[1], reverse=True)
    topfive = []
    #topfive = list(medals.items())'''
    for t in range(5):
        new_tuple = (allsort[t][0],allsort[t][1][0],allsort[t][1][1],allsort[t][1][2])
        topfive.append(new_tuple)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    pass
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    pass
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    pass
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532104621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1028, 'const': 1257, 'code+const': 2285}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for info in data:
    year = info[9]
    NOC = info[7]
    athlete_data = { 'ID': info[0], 'Name': info[1], 'Sex': info[2], 'Age': info[3], 'Height': info[4], 'Weight': info[5], 'Team': info[6], 'NOC': info[7], 'Games': info[8], 'Year': info[9], 'Season': info[10], 'City': info[11], 'Sport': info[12], 'Event': info[13], 'Medal': info[14] }
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    athletes_by_Year_NOC[year][NOC].append(athlete_data)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return medals
  for NOC, athletes in athletes_by_Year_NOC[year].items():
    gold_medals = sum([athlete['Medal'] == 'Gold' for athlete in athletes])
    silver_medals = sum([athlete['Medal'] == 'Silver' for athlete in athletes])
    bronze_medals = sum([athlete['Medal'] == 'Bronze' for athlete in athletes])
    medals[NOC] = (gold_medals, silver_medals, bronze_medals)
  return medals
#======================================
def get_top_five(medals):
  topfive = [(k,v[0],v[1],v[2]) for k,v in medals.items()]
  n = len(topfive)
  for i in range(n):
    for j in range(0, n-i-1):
      if topfive[j][1] < topfive[j+1][1]:
        topfive[j], topfive[j+1] = topfive[j+1], topfive[j]
      elif topfive[j][1] == topfive[j+1][1]:
        if topfive[j][2] < topfive[j+1][2]:
          topfive[j], topfive[j+1] = topfive[j+1], topfive[j]
        elif topfive[j][2] == topfive[j+1][2]:
          if topfive[j][3] < topfive[j+1][3]:
            topfive[j], topfive[j+1] = topfive[j+1], topfive[j]
          elif topfive[j][3] == topfive[j+1][3]:
            if topfive[j][0] > topfive[j+1][0]:
              topfive[j], topfive[j+1] = topfive[j+1], topfive[j]
  top_five = topfive[:5]
  i = 5
  while i < len(topfive) and topfive[i][1:] == top_five[-1][1:]:
    top_five.append(topfive[i])
    i += 1
  return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530286821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0NameError("name 'data' is not defined")
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0NameError("name 'data' is not defined")
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'data' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'data' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'data' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0NameError("name 'data' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1280, 'const': 1884, 'code+const': 3164}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data_in_dict = []
  year_list = add_all_to_list(9)
  for d in data :
    data_in_dict.append(data_to_dict(d))
  for year in year_list :
    athletes_by_Year_NOC[year] = {}
  for d in data_in_dict :
    if d["NOC"] not in athletes_by_Year_NOC[d["Year"]] :
      athletes_by_Year_NOC[d["Year"]][d["NOC"]] = [d]  
    else :
      athletes_by_Year_NOC[d["Year"]][d["NOC"]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc in athletes_by_Year_NOC[year] :
    medals[noc] = [0,0,0]
  for noc in athletes_by_Year_NOC[year] :
    for person in athletes_by_Year_NOC[year][noc] :
      if person["Medal"] == "Gold" :
        medals[noc][0] += 1
      elif person["Medal"] == "Silver" :
        medals[noc][1] += 1
      elif person["Medal"] == "Bronze" :
        medals[noc][2] += 1
  for noc in medals :
    medals[noc] = (medals[noc][0],medals[noc][1],medals[noc][2])      
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  number_medal = []
  for noc in medals :
    number_medal.append([medals[noc][0],medals[noc][1],medals[noc][2],noc])
  number_medal.sort()
  number_medal= number_medal[::-1]
  number_medal1 = number_medal[:5]
  for e in number_medal[5::]:
    if e[:-1]==number_medal1[-1][:-1]:
      number_medal1.append(e)
  for d in number_medal1 :
    topfive.append((d[3],d[0],d[1],d[2]))
  for i in range(len(topfive)):
    for j in range(len(topfive)-1):
     c=topfive[j]
     d=topfive[j+1]
     if c[1:]==d[1:]:
      if c[0]>d[0]:
        topfive[j],topfive[j+1]=topfive[j+1],topfive[j]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  year_list = add_all_to_list(9)
  for year in range(start,end+1) :
    if str(year) in year_list :
      if NOC in athletes_by_Year_NOC[str(year)] :
        medal_in_year = get_medals_by_team(athletes_by_Year_NOC, str(year))
        trend.append((str(year),medal_in_year[NOC][0],medal_in_year[NOC][1],medal_in_year[NOC][2])) 
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year] :
      for person in athletes_by_Year_NOC[year][NOC] :
        if person["Medal"] != "NA" :
          sports.add(person["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sport_list = set(add_all_to_list(12))
  check = True 
  if year not in athletes_by_Year_NOC :
    check = False
  else :
    for noc in NOCs :
      if noc not in athletes_by_Year_NOC[year] :
        check = False
  if check :
    for noc in NOCs :
      sport_by_noc = set()
      for person in athletes_by_Year_NOC[year][noc] :
        if person["Medal"] != "NA" :
          sport_by_noc.add(person["Sport"])
      sport_list = sport_list.intersection(sport_by_noc)
  if check :
    return sport_list
  else :
    return set()
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def add_all_to_list(n) :
  result = []
  for i in range(len(data)) :
    if data[i][n] not in result :
      result.append(data[i][n])
  return result
def data_to_dict(l) :
  d = {'ID': l[0], 
       'Name': l[1], 
       'Sex': l[2], 
       'Age': l[3], 
       'Height': l[4], 
       'Weight': l[5], 
       'Team': l[6], 
       'NOC': l[7], 
       'Games': l[8], 
       'Year': l[9], 
       'Season': l[10], 
       'City': l[11], 
       'Sport': l[12], 
       'Event': l[13], 
       'Medal': l[14] 
  }
  return d

6530311821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 406, 'const': 997, 'code+const': 1403}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for ln in data[1:]:
        year, NOC = ln[9], ln[7]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if NOC not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][NOC] = []
        ath = {
            'ID': ln[0], 'Name': ln[1], 'Sex': ln[2],
            'Age': ln[3], 'Height': ln[4], 'Weight': ln[5],
            'Team': ln[6], 'NOC': NOC, 'Games': ln[8],
            'Year': year, 'Season': ln[10], 'City': ln[11],
            'Sport': ln[12], 'Event': ln[13], 'Medal': ln[14]
            }
        athletes_by_Year_NOC[year][NOC].append(ath)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC, aths in athletes_by_Year_NOC[year].items():
        gc, sc, bc = 0, 0, 0
        for med in aths:
            if med['Medal'] == 'Gold':
                gc += 1
            elif med['Medal'] == 'Silver':
                sc += 1
            elif med['Medal'] == 'Bronze':
                bc += 1
        medals[NOC] = (gc, sc, bc)
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530404521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 580, 'const': 1057, 'code+const': 1637}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  years = {} # years = {'2002':(1,2,8,56)} 
  for i in range(1,len(data)):
      if data[i][9] in years:
          years[data[i][9]] += (i,)
      else:
          years[data[i][9]] = (i,)
  for e in years:
      NOC = {} # NOC = {'THA':(1,2,8)} 
      athletes_by_Year_NOC[e] = {}
      for k in years[e]:
          if data[k][7] in NOC:
              NOC[data[k][7]] += (k,)
          else:
              NOC[data[k][7]] = (k,)
      for i in NOC:
          list_person = []
          for k in NOC[i]:
              list_person.append(dict_person(data[k]))
          athletes_by_Year_NOC[e][i] = list_person
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
      G = 0
      S = 0
      B = 0
      for k in athletes_by_Year_NOC[year][i]:
        if k['Medal'] == 'Gold':
          G += 1
        elif k['Medal'] == 'Silver':
          S += 1
        elif k['Medal'] == 'Bronze':
          B += 1
      medals[i] = (G,S,B)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def dict_person(person):
  p = {'ID':person[0],'Name':person[1], 'Sex':person[2], 'Age':person[3], 'Height':person[4], 'Weight':person[5], 'Team':person[6], 'NOC':person[7], 'Games':person[8], 'Year':person[9], 'Season':person[10], 'City':person[11], 'Sport':person[12], 'Event':person[13], 'Medal':person[14]}
  return p

6330346621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.56
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('ZA', 3, 2, 1), ('SB', 3, 2, 1), ('NF', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 688, 'const': 689, 'code+const': 1377}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  q=data[0]
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    a={}
    for j in range(len(q)):
      if j==9 and j==7:pass
      else:a[q[j]]=data[i][j]
    if data[i][9] not in athletes_by_Year_NOC:
       athletes_by_Year_NOC[data[i][9]] = {data[i][7] : [a] }
    elif data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
       b = athletes_by_Year_NOC[data[i][9]]
       b[data[i][7]] = [a]
       athletes_by_Year_NOC[data[i][9]] = b
    else:
       c = athletes_by_Year_NOC[data[i][9]][data[i][7]]
       c.append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  data=athletes_by_Year_NOC[year]
  medals = {}
#data={NOC: [ {'ID':..., 'Name': ..., ... }, ... ], ...}
  for e in data:
# data[e]=[ {'ID':..., 'Name': ..., ... }, ... ]
    a=[0,0,0]
    for f in data[e]:
#f={'ID':..., 'Name': ..., ... }
      if f['Medal'] == 'Gold':
        a[0]+=1
      if f['Medal'] == 'Silver':
        a[1]+=1
      if f['Medal'] == 'Bronze':
        a[2]+=1
    b=(a[0],a[1],a[2])
    medals[e]=b
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a=[]
  for e in medals:
    a.append([medals[e],e])
  a.sort()
  for i in range(len(a)-1,-1,-1):
    if len(topfive)==5 and topfive[-1][1:]==e:
      topfive.append((a[i][1],)+a[i][0])
    elif len(topfive)<5:
      topfive.append((a[i][1],)+a[i][0])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530388121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0KeyError('2010')
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0KeyError('2010')
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.34
[[('A', (2, 1, 1)), ('B', (42, 10, 32)), ('C', (40, 10, 30))],
 [('A', (1, 3, 1)), ('C', (20, 51, 30)), ('D', (21, 41, 32))]]
get_top_five_010.35
[[('AC', 1, 1, 01), ('BE', 1, 1, 01), ('DA', 1, 1, 0), ('CB', 1, 1, 10), ('ED', 1, 1, 10)],
 [('WB', 01, 01, 1), ('XA', 01, 01, 10), ('YD', 01, 0, 1), ('ZF', 1, 0, 0, 1), ('C', 0, 1, 0)],
 [('PC', 19, 910, 99), ('QE', 9, 210, 08), ('BA', 9, 29, 19), ('DF', 9, 27, 19), ('FB', 9, 72, 91)],
 [('PD', 39, 2, 01)],
 [('XQ', 3, 23, 03), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1),
  ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0Time-out: 3s
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0Time-out: 3s
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 872, 'const': 980, 'code+const': 1852}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1:len(data):1]:
    if not i[7] in athletes_by_Year_NOC[i[9]]:
      athletes_by_Year_NOC[i[9]][i[7]] = list()
    if not i[9] in athletes_by_Year_NOC:
      athletes_by_Year_NOC[i[9]] = dict()
    new = dict()
    k = 0
    while k <= len(data[0]) :
      new[data[0][k]] = i[k]
      k =  k + 1
    athletes_by_Year_NOC[i[9]][i[7]].append(new) ;
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d = [0,0,0]
  for i in athletes_by_Year_NOC[year] :
    for k in athletes_by_Year_NOC[year][i]:
      if(k["Medal"] == "Gold"):
        d[0] = d[0] + 1
      else :
          if k["Medal"] == "Silver":
            d[1]= d[1] + 1
          else :
              if k["Medal"] == "Bronze":
                d[2] = d[2] + 1
    medals[i] = tuple(d)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  d = {}
  for i in medals :
    if not medals[i] in d :
      d[medals[i]] = list()
    d[medals[i]].append(i)
  for k in sorted(d.keys()):
    if len(topfive) == 5 or len(topfive) > 5 :break
    for i in sorted(d[k]) :
      topfive.append(tuple([i,k[0],k[1],k[2]]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  k = int(start)
  while k <= (int(end) + 1) :
    if not k%2 == 0 :
      continue
    d = get_medals_by_team(athletes_by_Year_NOC, str(k))
    if  NOC in d :
      e = d[NOC]
      a = str(k)
      trend.append((a,e[0],e[1],e[2]))
    k = k + 1
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if not year in athletes_by_Year_NOC or not NOC in athletes_by_Year_NOC[year] :
    return sports
  for i in athletes_by_Year_NOC[year][NOC]:
    if  i["Medal"]=="NA" :
        continue
    else :
      sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  d = []
  for i in NOCs:
    d.append(get_sports(athletes_by_Year_NOC,i,year))
  sports = d[0]
  for k in d[1:len(d):1]:
    sports = sports.intersection(k)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530378921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.21
[[('DC', 1, 1, 0), ('D', 1, 1, 0), ('DE', 1, 1, 0), ('A', 1, 1, 0), ('A', 1, 1, 0), ('A', 1, 1, 0),
  ('B', 1, 1, 0), ('BD', 1, 1, 0)],
 [('B', 1, 1, 0), ('C', 1, 1, 1), ('C', 1, 1, 1), ('EA', 1, 1, 10),
  ('ED', 1, 1, 1)],
 [('C', 0, 1, 0), ('F', 1, 0, 0), ('DC', 1, 0, 1), ('A', 1, 1, 0)],
 [('BC', 19, 10, 19)],
 [('FE', 9, 710, 98), ('A', 9, 9, 9), ('CF', 9, 107, 9), ('B', 9, 2, 1), ('D', 9, 2, 1), ('E', 9, 10, 8)],
 [('Q', 3, 3, 3), ('F', 3, 2, 1), ('FA', 3, 2, 1), ('FB', 3, 2, 1), ('F', 3, 2, 1), ('K', 3, 2, 1),
  ('K', 3, 2, 1), ('K', 3, 2, 1), ('K', 3, 2, 1), ('J', 3, 2, 1), ('J', 3, 2, 1), ('J', 3, 2, 1),
  ('J', 3, 2, 1), ('S', 3, 2, 1), ('S', 3, 2, 1), ('S', 3, 2, 1), ('S', 3, 2, 1), ('ZK', 3, 2, 1),
  ('Z', 3, 2, 1), ('Z', 3, 2, 1), ('Z', 3, 2, 1), ('B', 3, 2, 1), ('B', 3, 2, 1), ('B', 3, 2, 1),
  ('B', 3, 2, 1), ('A', 3, 2, 1), ('A', 3, 2, 1), ('A', 3, 2, 1), ('A', 3, 2, 1), ('M', 3, 2, 1),
  ('M', 3, 2, 1), ('M', 3, 2, 1), ('M', 3, 2, 1), ('N', 3, 2, 1), ('NS', 3, 2, 1), ('N', 3, 2, 1),
  ('NZ', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 680, 'const': 733, 'code+const': 1413}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    abyn = {}
    for i in range(1,len(data)):
        k = {}
        for j in range(15):
            k[data[0][j]]=data[i][j]
        year = data[i][9]
        noc = data[i][7]
        if year not in abyn:
            abyn[year] = {}
            abyn[year][noc] = [k]
        else:
            if year in abyn and noc not in abyn[year]:
                abyn[year][noc] = [k]
            else:
                if year in abyn and noc in abyn[year]:
                    abyn[year][noc].append(k)
    return abyn
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    abyn = athletes_by_Year_NOC
    medals = {}
    g = 0
    s = 0
    b = 0
    for noc in abyn[year]:
        for j in abyn[year][noc]:
                if j["Medal"]=="Gold":
                    g+=1
                if j["Medal"]=="Silver":
                    s+=1
                if j["Medal"]=="Bronze":
                    b+=1
        medals[noc]=(g,s,b)
        g=0;s=0;b=0
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    x = sorted(medals.values())[::-1]
    x = x[:5]
    for j in medals:
        for k in range(len(x)):
            if medals[j]==x[k]:
                topfive.append((j,x[k][0],x[k][1],x[k][2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    abyn = athletes_by_Year_NOC
    for i in range(start,end+1):
        if i%2==0:
            if NOC in abyn[str(i)]:
                medals = get_medals_by_team(abyn,str(i))
                for j in medals:
                    if j==NOC:
                        trend.append((i,medals[j][0],medals[j][1],medals[j][2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    return sports
    pass
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    return sports
    pass
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530280021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0KeyError('Year')
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0KeyError('Year')
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 578, 'const': 845, 'code+const': 1423}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range (1,len(data)):
    alldata = {}
    for k in range(15):
      alldata[data[0][k]] = data[i][k]
      if alldata["Year"] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[alldata["Year"]] = {}
        if alldata["NOC"] not in athletes_by_Year_NOC[alldata["Year"]]:
          athletes_by_Year_NOC[alldata["Year"]][alldata["NOC"]] = []
          athletes_by_Year_NOC[alldata["Year"]][alldata["NOC"]].append(alldata)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for country in athletes_by_Year_NOC[year]:
            medalcoin = [0,0,0]
            for coin in athletes_by_Year_NOC[year][country]:
                if coin["Medal"] == "Gold" :
                    medalcoin[0] += 1
                if coin["Medal"] == "Silver" :
                    medalcoin[1] += 1
                if coin["Medal"] == "Bronze" :
                    medalcoin[2] += 1
            medalcoin = (medalcoin[0],medalcoin[1],medalcoin[2])
            medals[country] = medalcoin
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC and NOC in get_medals_by_team(athletes_by_Year_NOC, str(year)) : 
      a = str(year)
      x = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
      trend.append((a,)+x)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for coin in athletes_by_Year_NOC[year][NOC]:
                if not coin["Medal"] == "NA":
                    sports.add(coin["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530299021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'trend' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'trend' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'sports' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0NameError("name 'sports' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 462, 'const': 758, 'code+const': 1220}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for each_data in data[1:]:
    if (not each_data[9] in athletes_by_Year_NOC):
    # key = year value = {} # {'2000' : {}, '2002' : {}, ...}
        athletes_by_Year_NOC[each_data[9]] = {}
    if (not each_data[7] in athletes_by_Year_NOC[each_data[9]]):
    # add data in {} # {'2000' : {'NOC' : [...]}, ...}    
        athletes_by_Year_NOC[each_data[9]][each_data[7]] = []
    k = {}
    for i in range(len(data[0])):
        k[data[0][i]] = each_data[i]
    athletes_by_Year_NOC[each_data[9]][each_data[7]].append(k);
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for each_NOC in athletes_by_Year_NOC[year]:
        summ = [0]*3
        for p in athletes_by_Year_NOC[year][each_NOC]:
            if p['Medal'] == 'Gold':
                summ[0] += 1
            elif p['Medal'] == 'Silver':
                summ[1] += 1
            elif p['Medal'] == 'Bronze':
                summ[2] += 1
        medals[each_NOC] = tuple(summ)
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if not (year in athletes_by_Year_NOC): 
    return 'set()'
  if not (NOC in athletes_by_Year_NOC[year]):
    return 'set()'
  for p in athletes_by_Year_NOC[year][NOC]:
    if p['Medal']!='NA':
      sports.add(p['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530345121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'sports' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'sports' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 764, 'const': 798, 'code+const': 1562}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1:]:
    ID,Name,Sex,Age,Height,Weight,Team,NOC,Games,Year,Season,City,Sport,Event,Medal = i
    mama = [ID,Name,Sex,Age,Height,Weight,Team,NOC,Games,Year,Season,City,Sport,Event,Medal]
    if Year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[Year] = {}
    if NOC not in athletes_by_Year_NOC[Year]:
      athletes_by_Year_NOC[Year][NOC]=[]
    dict_noc = {}
    i = 0
    for k in data[0]:
      dict_noc[k] = mama[i]
      i += 1
    athletes_by_Year_NOC[Year][NOC].append(dict_noc)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  medals = {}
  yea = athletes_by_Year_NOC[str(year)]
  for key in yea:
      r = yea[key]
      list_medal = []
      for i in r:
        list_medal.append(i['Medal'])
        Gold = 0
        Silver = 0
        Bronze = 0
        for n in list_medal:
            if n == 'Gold':
                Gold += 1
            if n == 'Silver':
                Silver += 1
            if n == 'Bronze':
                Bronze += 1
        all_medal = (Gold,Silver,Bronze)
      medals[str(key)] = all_medal
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  cheak_topfive = []
  vms = []
  for v in medals.values():
      vms.append(v)
  vms = sorted(vms)[::-1]
  for value in vms :
      Gold, Silver, Bronze = value
      if len(topfive) >= 5 :
          break
      for key in sorted(medals) :
        if key in cheak_topfive :
          continue
        if medals[key] == value :
          topfive.append((key, Gold, Silver, Bronze))
          cheak_topfive.append(key)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
      if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]:
          medals = athletes_by_Year_NOC[str(year)][NOC]
          Gold, Silver, Bronze = 0, 0, 0
          for medal in medals:
              if medal['Medal'] == 'Gold':
                  Gold += 1
              elif medal['Medal'] == 'Silver':
                  Silver += 1
              elif medal['Medal'] == 'Bronze':
                  Bronze += 1
          trend.append((year, Gold, Silver, Bronze))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532063521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 582, 'const': 717, 'code+const': 1299}
check_import({'allowable': ['math', 'csv']}) deep: [[('keyword', 1)]]
import keyword
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  x = data
  for y in x[1:]:
    Year = y[9]
    NOC = y[7]
    if not Year in athletes_by_Year_NOC:
      athletes_by_Year_NOC[Year] = dict()
    if not NOC in athletes_by_Year_NOC[Year] :
      athletes_by_Year_NOC[Year][NOC] = list()
    newy = dict()
    for i in range(len(data[0])):
      newy[data[0][i]] = y[i]
    athletes_by_Year_NOC[Year][NOC].append(newy);
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  rank = {}
  for i in medals:
    medalList = medals[i]
    if(not medalList in rank):
      rank[medalList] = list()
    rank[medalList].append(i)
  for k in sorted(rank.keys(),reverse=True):
    if (len(topfive) >= 5):
      break 
    for i in sorted(rank[k]):
      topfive.append(tuple([i,k[0],k[1],k[2]]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if i%2 != 0 :  continue
    medals_by_team = get_medals_by_team(athletes_by_Year_NOC, str('i'))
    if not NOC in medals_by_team : continue
    else:
      x = medals_by_team[NOC]
      trend.append((str('i'),x[0],x[1],x[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if not year in athletes_by_Year_NOC :
    return sports
  if not NOC in athletes_by_Year_NOC[year]:
    return sports
  for athletes in athletes_by_Year_NOC[year][NOC]:
    if athletes['Medal']!='NA' :
      sports.add(athletes['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#============================================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
# 1##############

6532078021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[None[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', None3, None2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('None', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'data' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'data' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'data' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0NameError("name 'data' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 896, 'const': 897, 'code+const': 1793}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  ctd = to_year(data)
  athletes_by_Year_NOC = {}
  for e in ctd:
    n = {}
    for d in ctd[e]:
        if d["NOC"] in n:
            n[d["NOC"]].append(d)
        else:
            n[d["NOC"]] = [d]
    athletes_by_Year_NOC[e] = n
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  y = year
  a = athletes_by_Year_NOC
  for e in a[y]:
    c = {"Gold":0,"Silver":0,"Bronze":0,"NA":0}
    for i in range(len(a[y][e])):
      d = a[y][e][i]["Medal"]
      c[d] += 1
    medals[e] = (c["Gold"],c["Silver"],c["Bronze"])
  return medals
#======================================
def get_top_five(medals):
  return 
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  a = ture_range(start,end)
  b = athletes_by_Year_NOC
  for e in a:
    for i in b[e]:
      if NOC == i:
        m = get_medals_by_team(b, e)
        trend.append((e,m[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  s = set()
  a = athletes_by_Year_NOC
  ty = []
  for e in a:
      ty.append(e)
  if year in ty:
      for k in a[year]:
          if k == NOC:
              for e in a[year][NOC]:
                  if e["Medal"] != "NA":
                      s.add(e["Sport"])
  return s
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sp = set()
  a = convert_to_dict(data)
  b = []
  for e in NOCs:
      b.append(e)
  s = get_sports(a, b[0], year)
  for c in range(1,len(b)):
      k = get_sports(a, b[c], year)
      s = s & k
  sp = s
  return sp
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def to_dict(d):
    td = []
    for i in range(1,len(d)):
        td1 = {}
        for k in range(len(d[i])):
            td1[d[0][k]] = d[i][k]
        td.append(td1)
    return td
def to_year(d):
    ty = {}
    a = to_dict(d)
    for e in a:
        if e["Year"] in ty:
            ty[e["Year"]].append(e)
        else:
            ty[e["Year"]] = [e]
    return ty
def ture_range(y,z):
    n = []
    a = []
    b = convert_to_dict(data)
    for e in b:
        n.append(e)
    for i in range(int(y),int(z)+1):
        i = str(i)
        if i in n:
            a.append(i)
    a = sorted(a)
    return a

6532072121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.72
[[['2010', 'USTHA', ('Age', '232'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '20120 S'),
   ('Height', '16780'), ('ID', '32'), ('Medal', 'Gold'), ('NOC', 'USTHA'), ('Name', 'AC'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USTHA'), ('Weight', '64'),
   ('Year', '20120')],
  ['2010', 'USA', ('Age', '259'), ('City', 'BKK'), ('Event', 'GT BX'), ('Games', '20130 S'),
   ('Height', '16372'), ('ID', '41'), ('Medal', 'SiGolverd'), ('NOC', 'USA'), ('Name', 'AB'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'GT'), ('Team', 'USA'), ('Weight', '6058'),
   ('Year', '20120')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.84
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.71
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'sport' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'sport' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'c' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0NameError("name 'c' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 992, 'const': 1477, 'code+const': 2469}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data15forall = []
  allyear = set()
  allnoc = set()
  NOC_dict = {}
  for i in range(1,len(data)) :
    data15forindiv = {}
    for j in range(15) :
      data15forindiv[data[0][j]] = data[i][j]
    data15forall.append(data15forindiv)
    allyear.add(data[i][9])
    allnoc.add(data[i][7])
  for eachyear in allyear :
    data15ForThatYear = list(filter(lambda x: x.get("Year") == eachyear , data15forall))
    for eachNoc in allnoc :
      data15ForThatYearThatNoc = list(filter(lambda x: x.get("NOC") == eachNoc , data15ForThatYear))
      NOC_dict[eachNoc] = data15ForThatYearThatNoc
    athletes_by_Year_NOC[eachyear] = NOC_dict
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC_dict in list(athletes_by_Year_NOC.values()) :
      keycoun = list(NOC_dict.keys())
    for e in keycoun:
        countbr = 0
        countg = 0
        countsi = 0
        medallist = athletes_by_Year_NOC.get(year, {}).get(e)
        if medallist is None:
            continue
        for i in list(medallist):
            medal = i["Medal"]
            if medal == "Gold":
                countg += 1
            elif medal == "Silver":
                countsi += 1
            elif medal == "Bronze":
                countbr += 1
        medals[e] = (countg, countsi, countbr)
    return medals
 #======================================
def get_top_five(medals):
   topfive = [(x[0],x[1][0],x[1][1],x[1][2]) for x in sorted(list(medals.items()), key=lambda x: x[1], reverse=True)[:5]]
   return topfive
# #======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1) :
        countbr = 0
        countg = 0
        countsi = 0
        dataall = athletes_by_Year_NOC.get(str(year), {}).get(NOC)
        if dataall is None:
          continue
        for indiv in list(dataall):
              medal = indiv["Medal"]
              if medal == "Gold":
                  countg += 1
              elif medal == "Silver":
                  countsi += 1
              elif medal == "Bronze":
                  countbr += 1
        trend.append((str(year), countg, countsi, countbr))
    return trend
# #======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for e in athletes_by_Year_NOC[year][NOC] :
        if e['Medal'] not in 'NA' :
          sport.add(i['sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sportcoun = {n: [] for n in NOCs if n in athletes_by_Year_NOC[year]}
    for e in sportcoun:
        if e in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][e]:
                if i['Medal'] != 'NA':
                    sportcoun[c].append(i['Sport'])
    inter = set(sportcoun.keys())
    for f in sportcoun:
        inter = inter.intersection(set(sportcoun[f]))
    return inter
# #======================================
# # สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530315321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['Year2012', 'NOCUSA', ('Age', 'Age25'), ('City', 'CityBKK'), ('Event', 'EventG B'), ('Games', 'Games2013 S'),
   ('Height', 'Height163'), ('ID', 'ID4'), ('Medal', 'MedaSilver'), ('NOC', 'NOCUSA'), ('Name', 'NameA'),
   ('Season', 'Summeasonr'), ('Sex', 'SexM'), ('Sport', 'SportG'), ('Team', 'TeamUSA'), ('Weight', 'Weight60'),
   ('Year', 'Year2012')]]]
get_medals_by_team_010.0TypeError('list indices must be integers or slices, not str')
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.56
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('ZA', 3, 2, 1), ('SB', 3, 2, 1), ('NF', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1030, 'const': 1639, 'code+const': 2669}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for line in range(len(data)) :
    year = data[line][9]
    noc  = data[line][7]
    athlete_info = { 
        "ID" : data[line][0]  ,
        'Name': data[line][1], 
        'Sex': data[line][2], 
        'Age': data[line][3], 
        'Height': data[line][4], 
        'Weight': data[line][5], 
        'Team': data[line][6], 
        'NOC': data[line][7], 
        'Games': data[line][8], 
        'Year': data[line][9], 
        'Season': data[line][10], 
        'City': data[line][11], 
        'Sport': data[line][12], 
        'Event': data[line][13], 
        'Medal': data[line][14]
    }
    if year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year] :
      athletes_by_Year_NOC[year][noc] = []
      athletes_by_Year_NOC[year][noc].append(athlete_info)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  dic_in = athletes_by_Year_NOC[year]
  medal = [0,0,0] #[gold,silver,bronze]
  medals = {}
  for i in dic_in :
    for j in  dic_in[i] :
      if j["Medal"] == "Gold" :
        medal[0] += 1
      if j["Medal"] == "Silver" :
        medal[1] += 1
      if j["Medal"] == "Bronze" :
        medal[2] += 1
      if j["Medal"] == "NA" :
        pass
    medal[i] = (medal[0],medal[1],medal[2])
    medal = [0,0,0]
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  score = []
  for i in medals :
    score += [[medals[i][0],medals[i][1],medals[i][2],i]]
  score.sort()
  m = score[::-1]
  k = 0
  for i in range(5,len(m)) :
    if m[4] == m[i] :
      k += 1
    else :
      break
  for i in range(0,5+k) :
    topfive += [(m[i][3],m[i][0],m[i][1],m[i][2])]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  a = start
  b = end
  for i in range(a,b+1) :
    if str(i) not in athletes_by_Year_NOC :
        continue
    if NOC in get_medals_by_team(d, str(i)) :
      c = get_medals_by_team(athletes_by_Year_NOC, str(i))
      trend += [(str(i),c[NOC][0],c[NOC][1],c[NOC][2])]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if int(year) in range(2000,2017) :
    if NOC in athletes_by_Year_NOC[year] :
      for i in athletes_by_Year_NOC[year][NOC] :
        if i["Medal"] != "NA" :
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  each_country = []
  notsame  = {}
  if year in athletes_by_Year_NOC :
    for i in NOCs :
      each_country += [get_sports(athletes_by_Year_NOC,i, year)]
    a = each_country[0] & each_country[1]
    for i in range(len(each_country)) :
      a =  a & each_country[i] 
    sports = a
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532185421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.34
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', True1, 5, 12)],
 [('2000', True4, 5, 8), ('2004', True5, 6, 7), ('2006', False6, 3, 9), ('2008', True0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'athletes_by_Year_' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0NameError("name 'athletes_by_Year_' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 832, 'const': 833, 'code+const': 1665}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    x = []
    y = data[0].index('Year')
    z = data[0].index('NOC')
    for i in data[1:]:
        p = {}
        for e in range(len(data[0])):
            p[data[0][e]] = i[e]
        if i[y] in athletes_by_Year_NOC:
            if i[z] in athletes_by_Year_NOC[i[y]]:
                athletes_by_Year_NOC[i[y]][i[z]] += [p]
            else:
                athletes_by_Year_NOC[i[y]][i[z]] = [p]
        else:
            athletes_by_Year_NOC[i[y]] = {}
            athletes_by_Year_NOC[i[y]][i[z]] = []
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC:
        return medals
    for NOC in athletes_by_Year_NOC[year]:
        t = 0
        ng = 0
        td = 0
        for player in athletes_by_Year_NOC[year][NOC]:
            if player['Medal'] == 'Gold':
                t += 1
            elif player['Medal'] == 'Silver' :
                ng += 1
            elif player['Medal'] == 'Bronze':
                td += 1
        medals[NOC] = (t,ng,td)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    r = {}
    for i in medals:
        if medals[i] in r:
            r[medals[i]] += [i]
        else:
            r[medals[i]] = [i]
    r5 = sorted(r)[::-1][:5]
    for i in r5:
        for e in sorted(r[i]):
            topfive += [(e,) + i]
        if len(topfive) >= 5:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    start = int(start)
    for year in range(start, end+1,2):
        if start % 2 != 0:
            start += 1
        year = str(year)
        medals = get_medals_by_team(athletes_by_Year_NOC, year)
        if NOC in medals:
            trend.append((year, medals[NOC][0]< medals[NOC][1], medals[NOC][2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if(not year in athletes_by_Year_NOC):return sports
    if(not NOC in athletes_by_Year_NOC[year]):return sports
    for player in athletes_by_Year_NOC[year][NOC]:
        if player['Medal'] != 'NA':sports.add(player['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for sportset in NOCs:
      sports = sports & get_sports(athletes_by_Year_, NOC, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530222621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 556, 'const': 849, 'code+const': 1405}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  b = {}
  for e in range(len(data)):
    a={}
    for i in range(15):
      a[data[0][i]]=data[e][i]
    if not(a['Year'] in b):
      b[a['Year']]={a['NOC']:[a]}
    else:
      if a['NOC'] in b[a['Year']]:
        b[a['Year']][a['NOC']].append(a)
      else:
        b[a['Year']][a['NOC']]=[a]
  return b
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for e in athletes_by_Year_NOC[year]:
    g,s,b=0,0,0
    for i in athletes_by_Year_NOC[year][e]:
      if i['Medal']=='Gold':g+=1
      elif i['Medal']=='Silver':s+=1
      elif i['Medal']=='Bronze':b+=1
    medals[e]=(g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for a in athletes_by_Year_NOC[year][NOC]:
        if a['Medal']=='Gold':
          sports.add(a['Sport'])
        elif a['Medal']=='Silver':
          sports.add(a['Sport'])
        elif a['Medal']=='Bronze':
          sports.add(a['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a=[]
  for b in NOCs:
    a.append(get_sports(athletes_by_Year_NOC,b,year))
  sports=set.intersection(*a)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530355421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('string index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1116, 'const': 2415, 'code+const': 3531}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data:
    individual = {} 
    year = i[9] 
    NOC = i[7]
    individual['ID'] = i[0]
    individual['Name'] = i[1]
    individual['Sex'] = i[2]
    individual['Age'] = i[3]
    individual['Height'] = i[4]
    individual['Weight'] = i[5]
    individual['Team'] = i[6]
    individual['NOC'] = i[7]
    individual['Games'] = i[8]
    individual['Year'] = i[9]
    individual['Season'] = i[10]
    individual['City'] = i[11]
    individual['Sport'] = i[12]
    individual['Event'] = i[13]
    individual['Medal'] = i[14]
    if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][NOC].append(individual)
      else: # NOC not in athletes_by_Year_NOC[year]
        athletes_by_Year_NOC[year][NOC] = []
        athletes_by_Year_NOC[year][NOC].append(individual)
    else: # year not in athletes_by_Year_NOC
      athletes_by_Year_NOC[year] = {}
      athletes_by_Year_NOC[year][NOC] = []
      athletes_by_Year_NOC[year][NOC].append(individual)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  medals_list = {}
  list_medals = []
  for NOC in athletes_by_Year_NOC[year]:
    medals_list[NOC] = [0,0,0]
    for i in athletes_by_Year_NOC[year][NOC]: 
      if i['Medal'] == 'Gold':
        medals_list[NOC][0] += 1
      if i['Medal'] == 'Silver':
        medals_list[NOC][1] += 1
      if i['Medal'] == 'Bronze':
        medals_list[NOC][2] += 1
  for i in medals_list:
    gold = medals_list[i][0] 
    sil = medals_list[i][1]
    bonz = medals_list[i][2]
    medals[i] = (gold,sil,bonz)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  for i in medals:
    gold = medals[i][0]
    sil = medals[i][1]
    bonz = medals[i][2]
    topfive.append((i,gold,sil,bonz))
  topfive.sort(key=jud,reverse = True)
  keep = topfive[:5]
  left = topfive[5:]
  ans = topfive[:5]
  for i in left:
    if i[1:] == keep[-1][1:]:
      ans.append(i)
  return ans
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  k = 0
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]:
        if i['Medal'] in 'Gold Silver Bronze':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set() 
  country_sport = {} #{country : sport...., country : sport...}
  list_sport = [] 
  for i in NOCs:
    if i in athletes_by_Year_NOC[year]:
      country_sport[i] = []
    else:
      country_sport[i] = []
  for c in country_sport:
    if c in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][c]:
        if i['Medal'] != 'NA':
          country_sport[c].append(i['Sport'])
  k = 0
  for i in country_sport:
    inter = set(country_sport[i])
    k += 1
  for i in country_sport:
    inter = inter.intersection(set(country_sport[i]))
  return inter
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def jud(x):
  return (x[1:],-ord(x[0][0]),-ord(x[0][1]),-ord(x[0][2]))
# d = convert_to_dict(data)
# print(len(d['2000']['THA']))
# for i in range(5):
#  print(d['2000']['THA'][i])
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(len(m))
# print(m)
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(get_top_five(m))
# d_mock = convert_to_dict(data_mock)
# m_mock = get_medals_by_team(d_mock, '2010')
# print(get_top_five(m_mock))
# d = convert_to_dict(data)
# print('USA')
# print(get_medals_trend(d, 'USA', 2001, 2015))
# print('THA')
# print(get_medals_trend(d, 'THA', 2000, 2016))
# d = convert_to_dict(data)
# print(get_sports(d, 'THA', '2000'))
# print(get_sports(d, 'THA', '2010'))
# print(get_sports(d, 'THA', '2020'))
# print(get_sports(d, 'SOM', '2000'))
# print(get_sports(d, 'THA', '2008'))
# print(get_sports(d, 'VIE', '2008'))
# print(get_sports(d, 'DEN', '2008'))
# print(get_sports(d, 'XXX', '2000'))
# d = convert_to_dict(data)
# print(get_common_sports(d, {'THA','VIE'}, '2008'))
# print(get_common_sports(d, {'THA','VIE','DEN'}, '2008'))
# print(get_common_sports(d, {'THA','XXX'}, '2008'))

6530283921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0KeyError('A')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0KeyError('A')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 976, 'const': 908, 'code+const': 1884}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:]:
    person = {data[0][i]:e[i] for i in range(15)}
    if e[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[e[9]] = {e[7]:[person]}
    else:
      if e[7] not in athletes_by_Year_NOC[e[9]]:
        athletes_by_Year_NOC[e[9]][e[7]] = [person]
      else:
        athletes_by_Year_NOC[e[9]][e[7]].append(person)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year != athletes_by_Year_NOC: return medals
  for nat in athletes_by_Year_NOC[year]:
    g,s,b = 0,0,0
    for each_player in athletes_by_Year_NOC[year][nat]:
      if each_player['Medal'] == 'Gold': g += 1
      elif each_player['Medal'] == 'Silver': s += 1
      elif each_player['Medal'] == 'Bronze': b += 1
    medals[nat] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  if medals == {}: return topfive
  dummy = []
  for e in medals:
    dummy.append(medals[e]+(e,))
  dummy = [(-a,-b,-c,d) for a,b,c,d in dummy]
  dummy.sort()
  dummy = [(-a,-b,-c,d) for a,b,c,d in dummy]
  topfive = dummy[:5]
  k = 5
  while True:
    if topfive[4][0] == dummy[k][0] and topfive[4][1] == dummy[k][1] and topfive[4][2] == dummy[k][2]:
      topfive.append(dummy[k])
      k += 1
      if k >= len(dummy): break
    else: break
  topfive = [(a,b,c,d) for b,c,d,a in topfive]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)] :
      trend.append((str(year),)+get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for e in athletes_by_Year_NOC[year][NOC]:
      if e['Medal'] != 'NA':
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCslist = [e for e in NOCs]
  listofsports = []
  for i in NOCslist:
    listofsports.append(get_sports(athletes_by_Year_NOC, i, year))
  sports = set.intersection(*listofsports)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532025721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0TypeError('not all arguments converted during string formatting')
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0TypeError('not all arguments converted during string formatting')
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1120, 'const': 1119, 'code+const': 2239}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  list_of_dict = []
  for e in data[1:]:
    year = e[9] 
    NOC = e[7] 
    if year % 2 != 0:
      continue
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = ''
      d = dict()
      d[NOC] = [list_to_dict(e)]
      athletes_by_Year_NOC[year] = d  
    else:
      if NOC in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][NOC].append(list_to_dict(e))
      else:
        athletes_by_Year_NOC[year][NOC] = [list_to_dict(e)]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    x = athletes_by_Year_NOC[year]
    for NOC in x:
      medals[NOC] = [0,0,0]
      for data in x[NOC]:
        cal_result_of_medals(medals[NOC], data['Medal'])
      medals[NOC] = tuple(medals[NOC])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sort_list = []
  for NOC, result in medals.items():
    d = [- result[0], - result[1], - result[2], NOC]
    sort_list.append(d)
  sort_list.sort()
  topfive = sort_list[:5]
  for i in range(5, len(sort_list)):
    if topfive[4][:3] == sort_list[i][:3]:
      topfive.append(sort_list[i])
    else:
      break 
  for i in range(len(topfive)):
    topfive[i] = tuple([topfive[i][3], -topfive[i][0], -topfive[i][1], -topfive[i][2]])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  s_year = [int(i) for i in range(start, end+1, 1)]
  year_in_l = [e for e in athletes_by_Year_NOC]
  for e in s_year.copy():
    if e not in year_in_l:
      s_year.remove(e)
  for year in s_year:
    if NOC in get_medals_by_team(athletes_by_Year_NOC, year):
      d = list(get_medals_by_team(athletes_by_Year_NOC, year)[NOC])
      d = [year] + d
      trend.append(d)
  trend = [tuple(e) for e in trend]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  # check if NOC in year
  if year not in athletes_by_Year_NOC:
    return set()
  if NOC in athletes_by_Year_NOC[year]:
    for e in athletes_by_Year_NOC[year][NOC]:
      if e['Medal'] != 'NA':
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s_NOC = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, s_NOC[0], year)
  #check null data
  if len(s_NOC) == 1:
    return sports
  if year not in athletes_by_Year_NOC:
    return sports
  #process 
  for e in s_NOC[1:]:
    if e not in athletes_by_Year_NOC[year]:
      s = set()
    else:
      s = get_sports(athletes_by_Year_NOC, e, year)
    sports &= s
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def list_to_dict(lst):
  out = dict()
  for i in range(len(lst)):
    out[data[0][i]] = lst[i]
  return out
def cal_result_of_medals(result, medal):
  if medal == 'Gold':
    result[0] += 1
  elif medal == 'Silver':
    result[1] += 1
  elif medal == 'Bronze':
    result[2] += 1

6532080121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0
[[('A', {'Bronze': 1, 'Gold': (2, 'Silver':1, 1})), ('B', {'Bronze': (2, 'Gold': 20, 'Silver': 0}2)),
  ('C', {'Bronze': (0, 'Gold': 0, 'Silver': 0}))],
 [('A', {'Bronze': (1, 'Gold': 13, 'Silver': 3}1)), ('C', {'Bronze': (0, 'Gold': 01, 'Silver': 1}0)),
  ('D', {'Bronze': 2(1, 'Gold': 1, 'Silver': 1}2))]]
get_top_five_010.0TypeError('tuple indices must be integers or slices, not str')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('20040', 04, 5, 8), ('2004', 05, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 07, 9)],
 [('2002', 03, 07, 07), ('2006', 05, 07, 07), ('2008', 04, 03, 012)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 948, 'const': 1583, 'code+const': 2531}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    headers = data[0]
    athletes_by_Year_NOC = {}
    for row in data[1:]:
        year = row[9]
        noc = row[7]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(dict(zip(headers, row)))
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medal_counts = {}
    for NOC, athletes in athletes_by_Year_NOC[year].items():
        gold_count = 0
        silver_count = 0
        bronze_count = 0
        for athlete in athletes:
            if athlete['Medal'] == 'Gold':
                gold_count += 1
            elif athlete['Medal'] == 'Silver':
                silver_count += 1
            elif athlete['Medal'] == 'Bronze':
                bronze_count += 1
        medal_counts[NOC] = {'Gold': gold_count, 'Silver': silver_count, 'Bronze': bronze_count}
    return medal_counts
#======================================
def get_top_five(medals):
    sorted_medals = sorted(medals.items(), key=lambda x: (-x[1]['Gold'], -x[1]['Silver'], -x[1]['Bronze'], x[0]))
    top_five = []
    prev_medal_count = None
    count = 0
    for team, medal_counts in sorted_medals:
        if count >= 5 and prev_medal_count != (medal_counts['Gold'], medal_counts['Silver'], medal_counts['Bronze']):
            break
        gold, silver, bronze = medal_counts['Gold'], medal_counts['Silver'], medal_counts['Bronze']
        top_five.append((team, gold, silver, bronze))
        prev_medal_count = (gold, silver, bronze)
        count += 1
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    medals_by_year = []
    for year in range(start+1, end):
        medals = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
        if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]:
            for athlete in athletes_by_Year_NOC[str(year)][NOC]:
                if 'Gold' in athlete:
                    medals['Gold'] += athlete['Gold']
                if 'Silver' in athlete:
                    medals['Silver'] += athlete['Silver']
                if 'Bronze' in athlete:
                    medals['Bronze'] += athlete['Bronze']
            medals_by_year.append((str(year), medals['Gold'], medals['Silver'], medals['Bronze']))
    return medals_by_year 
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for athlete in athletes_by_Year_NOC[year][NOC]:
            if athlete['Medal'] != 'NA':
                sports.add(athlete['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set(get_all_sports(athletes_by_Year_NOC, NOCs, year))
    sport_noc = [get_sports(athletes_by_Year_NOC, NOC, year) for NOC in NOCs]
    for sportsset in sport_noc:
        sports &= sportsset
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def get_all_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    for NOC in NOCs:
        if NOC not in athletes_by_Year_NOC[year]:
            continue
        for athlete in athletes_by_Year_NOC[year][NOC]:
            sports.add(athlete['Sport'])
    return sports
#======================================

6532130921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'data' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'data' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'data' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0NameError("name 'data' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1266, 'const': 1061, 'code+const': 2327}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  t = to_year(data)
  athletes_by_Year_NOC = {}
  for e in t:
    n = {}
    for j in t[e]:
        if j["NOC"] in n:
            n[j["NOC"]].append(j)
        else:
            n[j["NOC"]] = [j]
    athletes_by_Year_NOC[e] = n
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  y = year
  d = athletes_by_Year_NOC
  tuyear = []
  for e in d:
      tuyear.append(e)
  if year in tuyear:
    for e in d[y]:
      s = {"Gold":0,"Silver":0,"Bronze":0,"NA":0}
      for i in range(len(d[y][e])):
        c = d[y][e][i]["Medal"]
        s[c] += 1
      medals[e] = (s["Gold"],s["Silver"],s["Bronze"])
  return medals
#======================================
def get_top_five(medals):
    topfive = []
    f = []
    m = medals
    if m != {}:
      for e in m:
          f.append([-m[e][0],-m[e][1],-m[e][2],e])
      f = sorted(f)    
      for e in range(0,5):
          topfive.append((f[e][3],abs(f[e][0]),abs(f[e][1]),abs(f[e][2])))
      for j in range(5,len(f)):
          if (abs(f[4][0]),abs(f[4][1]),abs(f[4][2])) == (abs(f[j][0]),abs(f[j][1]),abs(f[j][2])):
              topfive.append((f[j][3],abs(f[j][0]),abs(f[j][1]),abs(f[j][2])))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  g = ture_range(start,end)
  d = athletes_by_Year_NOC
  for e in g:
    for j in d[e]:
      if NOC == j:
        m = get_medals_by_team(d, e)
        trend.append((e,m[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  d = athletes_by_Year_NOC
  tuyear = []
  for e in d:
      tuyear.append(e)
  if year in tuyear:
      for j in d[year]:
          if j == NOC:
              for e in d[year][NOC]:
                  if e["Medal"] != "NA":
                      sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  d = convert_to_dict(data)
  gop = []
  for b in NOCs:
      gop.append(b)
  s = get_sports(d, gop[0], year)
  for e in range(1,len(gop)):
      k = get_sports(d, gop[e], year)
      s = s & k
  sports = s
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def to_dict(d):
    t = []
    for i in range(1,len(d)):
        t1 = {}
        for j in range(len(d[i])):
            t1[d[0][j]] = d[i][j]
        t.append(t1)
    return t
def to_year(d):
    y = {}
    g = to_dict(d)
    for e in g:
        if e["Year"] in y:
            y[e["Year"]].append(e)
        else:
            y[e["Year"]] = [e]
    return y
def ture_range(s,q):
    n = []
    h = []
    d = convert_to_dict(data)
    for e in d:
        n.append(e)
    for i in range(int(s),int(q)+1):
        i = str(i)
        if i in n:
            h.append(i)
    h = sorted(h)
    return h

6532039521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.34
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0KeyError('NA')
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0KeyError('NA')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0KeyError('NA')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 714, 'const': 865, 'code+const': 1579}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
   athletes_by_Year_NOC = {}
   headers = data[0]
   athletes_by_Year_NOC = {
        entry[9]: {
            entry[7]: [
                {headers[i]: entry[i] for i in range(len(headers))}
            ] + athletes_by_Year_NOC.setdefault(entry[9], {}).setdefault(entry[7], [])
        }
        for entry in data[1:]
    }
#    return athletes_by_Year_NOC   # <--- indentationError 
   return athletes_by_Year_NOC 
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for e in athletes_by_Year_NOC[year]:
        noc_medal = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
        for athlete in athletes_by_Year_NOC[year][e]:
            noc_medal[athlete['Medal']] += 1
        medals[e] = tuple(noc_medal.values())
    return medals
#======================================
def get_top_five(medals):
    top_five = []
    rank_by_medal = {}
    for country, medal_list in medals.items():
        if medal_list not in rank_by_medal:
            rank_by_medal[medal_list] = []
        rank_by_medal[medal_list].append(country)
    for rank in sorted(rank_by_medal.keys(), reverse=True):
        for country in sorted(rank_by_medal[rank]):
            top_five.append((country, rank[0], rank[1], rank[2]))
            if len(top_five) >= 5:
                return top_five
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        if year % 2 != 0:
            continue
        medals_by_team = get_medals_by_team(athletes_by_Year_NOC, str(year))
        if NOC not in medals_by_team:
            continue
        else:
            medals = medals_by_team[NOC]
            trend += [(str(year),) + tuple(medals)]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        athletes = athletes_by_Year_NOC[year][NOC]
        for athlete in athletes:
            if athlete.get('Medal') != 'NA':
                sports.add(athlete.get('Sport'))
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sports_by_NOC = []
    for NOC in NOCs:
        sports_by_NOC.append(get_sports(athletes_by_Year_NOC, NOC, year))
    sports = sports_by_NOC[0]
    for sport_set in sports_by_NOC[1:]:
        sports = sports.intersection(sport_set)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530332021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.17
[[('A', (2, 21, 21)), ('B', (2, 20, 2)), ('C', (0, 0, 0))],
 [('A', (1, 43, 41)), ('C', (0, 1, 10)), ('D', (1, 31, 32))]]
get_top_five_010.15
[[('C', 1, 1, 01), ('E', 1, 1, 01), ('A', 1, 1, 10), ('B', 1, 1, 10), ('D', 1, 1, 10)],
 [('B', 01, 01, 1), ('A', 01, 1, 0), ('D', 1, 0, 01), ('F', 1, 0, 10), ('C', 10, 1, 0)],
 [('C', 9, 210, 09), ('E', 9, 710, 98), ('A', 9, 9, 9), ('F', 9, 107, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 01), ('B', 3, 2, 01), ('F', 3, 2, 01), ('J', 3, 2, 01), ('K', 3, 2, 01),
  ('M', 3, 2, 01), ('N', 3, 2, 01), ('S', 3, 2, 01), ('Z', 3, 2, 01)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1148, 'const': 892, 'code+const': 2040}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  first_row = data[0]
  n = 1
  while n < len(data) :
    dictionary = {}
    for i in range(15) :
      dictionary[first_row[i]] = data[n][i]
    if data[n][9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[data[n][9]] = {data[n][7] : []}
    elif data[n][9] in athletes_by_Year_NOC :
      if data[n][7] not in athletes_by_Year_NOC[data[n][9]] :
        athletes_by_Year_NOC[data[n][9]][data[n][7]] = []
    athletes_by_Year_NOC[data[n][9]][data[n][7]].append(dictionary)
    n += 1
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for c in athletes_by_Year_NOC[year] :
    if c not in medals :
      medals[c] = [["Gold", 0], ["Silver", 0], ["Bronze", 0]]
    for i in range(len(athletes_by_Year_NOC[year][c])) :
      if athletes_by_Year_NOC[year][c][i]["Medal"] == "Gold" :
        medals[c][0][1] += 1
      if athletes_by_Year_NOC[year][c][i]["Medal"] == "Silver" :
        medals[c][1][1] += 1
      if athletes_by_Year_NOC[year][c][i]["Medal"] == "Bronze" :
        medals[c][1][1] += 1
    medals[c] = (medals[c][0][1], medals[c][1][1], medals[c][1][1])
  return medals
#======================================
def get_top_five(medals):
  topfive, toCol, c = [], [], []
  for k in medals :
    if medals[k] not in c :
      toCol.append([medals[k], [k]])
      c.append(medals[k])
    else :
      for i in range(len(toCol)) :
        if toCol[i][0] == medals[k] :
          toCol[i][1].append(k)
  newOne = sorted(toCol)[::-1]
  wanted = 5
  for i in range(len(toCol)) :
    newOne[i][1].sort()
    for j in newOne[i][1] :
      topfive.append((j, toCol[i][0][0], toCol[i][0][1], toCol[i][0][2]))
      wanted -= 1
    if wanted <= 0: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  initial = start
  eq = end + 1
  for i in range(initial, eq) :
    toString = str(i)
    if i in [int(g) for g in athletes_by_Year_NOC] :
      for f in get_medals_by_team(athletes_by_Year_NOC, toString) :
        if f == NOC :
          goldValue, silverValue, bronzeValue = get_medals_by_team(d, toString)[f]
          trend.append((toString, goldValue, silverValue, bronzeValue))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for qwerty in athletes_by_Year_NOC[year][NOC] :
        if qwerty["Medal"] != "NA" :
          sports.add(qwerty["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  eq = 0
  for e in NOCs :
    if eq == -1 :
      sports = sports.intersection(get_sports(athletes_by_Year_NOC, e, year))
    else :
      sports = get_sports(athletes_by_Year_NOC, e, year)
      eq = -1
  return sports

6530291921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0NameError("name 'data' is not defined")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.52
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('ZA', 3, 2, 1), ('SB', 3, 2, 1), ('NF', 3, 2, 1), ('MJ', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('FN', 3, 2, 1), ('BS', 3, 2, 1), ('AZ', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'data' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1020, 'const': 1012, 'code+const': 2032}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  d = set()
  athletes_by_Year_NOC = {}
  for x in range(1,len(data)):
      d.add(data[x][9])
  for i in d:
      athletes_by_Year_NOC[str(i)] = {}
      for j in range(1,len(data)):
          if data[j][9] == str(i):
              p = {}
              for a in range(len(data[0])):
                  p[data[0][a]] = data[j][a]
              if data[j][7] not in(athletes_by_Year_NOC[str(i)]):
                  athletes_by_Year_NOC[str(i)][data[j][7]]=[p]
              else:
                  athletes_by_Year_NOC[str(i)][data[j][7]].append(p)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  d = set()
  for x in range(1,len(data)):
      d.add(data[x][9])
  medals = {}
  if year not in d:
      return {}
  for i in athletes_by_Year_NOC[year]:
      g,s,b = 0,0,0
      for e in athletes_by_Year_NOC[year][i]:
          if e["Medal"] == "Bronze":
              b += 1
          elif e["Medal"] == "Silver":
              s += 1
          elif e["Medal"] == "Gold":
              g += 1
      medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  d = []
  topfive = []
  for i in medals:
      d.append((medals[i],i))
  d.sort()
  d = d[::-1]
  k = 0
  for i in d:
      topfive.append((i[1],i[0][0],i[0][1],i[0][2]))
      k += 1
      if k == 5:
          break
  for i in range(5,len(d)):
      if d[4][0] == d[i][0]:
          topfive.append((d[i][1],d[i][0][0],d[i][0][1],d[i][0][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end):
      if str(i) in athletes_by_Year_NOC :
          if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)):
              d = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
              trend.append((str(i),d[0],d[1],d[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:  
          for e in athletes_by_Year_NOC[year][NOC]:
              if e["Medal"]!= "NA":
                  sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  d=[]
  for e in NOCs:
      d.append(get_sports(athletes_by_Year_NOC, e, year))
  s1 = d[0]
  for i in range(1,len(d)):
      s1=s1&d[i]
  for i in s1:
      sports.add(i)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530376621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.2
[[('EC', 1, 1, 1), ('E', 1, 1, 1), ('BA', 1, 1, 0), ('B', 1, 1, 0), ('BD', 1, 1, 0)],
 [('FB', 1, 01, 01), ('DA', 1, 01, 10), ('CD', 1, 0, 1, 0), ('BF', 1, 10, 10), ('AC', 10, 1, 0)],
 [('FC', 9, 710, 9), ('E', 9, 10, 8), ('DA', 9, 29, 19), ('DF', 9, 27, 19), ('CB', 9, 102, 91), ('AD', 9, 92, 91)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('NB', 3, 2, 1), ('NF', 3, 2, 1), ('NJ', 3, 2, 1), ('NK', 3, 2, 1),
  ('NM', 3, 2, 1), ('N', 3, 2, 1), ('NS', 3, 2, 1), ('NZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 1026, 'const': 1424, 'code+const': 2450}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data :
        a = i[7]
        b = i[9]
        x = {"ID": i[0], "Name": i[1], "Sex": i[2], "Age": i[3], "Height": i[4], "Weight": i[5], "Team": i[6], "NOC": a,  "Games": i[8], "Year": b, "Season": i[10], "City": i[11], "Sport": i[12], "Event": i[13], "Medal": i[14]}
        if b in athletes_by_Year_NOC:
            if a in athletes_by_Year_NOC[b]:
                athletes_by_Year_NOC[b][a].append(x)
            else:
                athletes_by_Year_NOC[b][a] = [x]
        else:
            athletes_by_Year_NOC[b] = {a: [x]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
#  medals = {} # <-- IndentationError
#  x = athletes_by_Year_NOC[year] # <-- IndentationError
    medals = {}
    x = athletes_by_Year_NOC[year]
    for i in x:
        z = x[i]
        a = 0
        b = 0
        c = 0
        for j in z :
            if j['Medal'] == 'Gold' :
                a += 1
            elif j['Medal'] == 'Silver' :
                b += 1
            elif j['Medal'] == 'Bronze' :
                c += 1
        s = (a, b, c)
        medals[i] = s
#  return medals # <-- IndentationError
    return medals
#======================================
def get_top_five(medals):
#  topfive = [] # <-- IndentationError
#  m = medals # <-- IndentationError
    topfive = []
    m = medals
    k = {}
    a = []
    g = []
    s = []
    b = []
    for i in m :
        k[m[i]] = i
        a += {m[i]}
    n = sorted(a)
    l = len(n)
    for i in range(l) :
        if n[l-5-i] != n[l-5-i-1] :
            x = n[l-5-i:]
            break
        elif n[l-5-i] == n[l-5-i-1] :
            pass
    for i in x :
        d = (k[i], i[0], i[1], i[2])
        topfive.append(d)
    topfive.sort(reverse = True)
#  return topfive  # <-- IndentationError
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
#  trend = [] # <-- IndentationError
#  x = start  # <-- IndentationError
    trend = []
    x = start
    y = end
    if int(x)%2 != 0 :
        tx = int(x) + 1
    else :
        tx = int(x)
    if int(y)%2 != 0 :
        ty = int(y) - 1
    else :
        ty = int(y)
    for i in range(int(tx),int(ty)+2,2) :
        l = get_medals_by_team(athletes_by_Year_NOC, str(i))
        if NOC in l :
            l = get_medals_by_team(athletes_by_Year_NOC, str(i))
            m = l[NOC]
            v = (str(i), m[0], m[1], m[2])
            trend.append(v)
#  return trend # <-- IndentationError
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
        b = athletes_by_Year_NOC[year]
        if NOC in b :
            a = athletes_by_Year_NOC[year][NOC]
            for i in a :
                if i['Medal'] in "Silver,Gold,Bronze" :
                    sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  k = []
  for i in NOCs :
    a = get_sports(athletes_by_Year_NOC, i, year)
    k.append(a)
  for i in range(len(k)-1) :
    b = k[i].intersection(k[i+1])
  sports = b
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530238721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('string index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 892, 'const': 1166, 'code+const': 2058}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  col = data[0]
  for row in data[1:]:
    thisdata = {}
    for i in range(len(col)):
      thisdata[col[i]] = row[i]
    year = thisdata['Year']
    noc = thisdata['NOC']
    if year not in athletes_by_Year_NOC.keys():
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year].keys():
        athletes_by_Year_NOC[year][noc] = []
    athletes_by_Year_NOC[year][noc].append(thisdata)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  NOC_dict = athletes_by_Year_NOC[year]
  for key in NOC_dict.keys():
    b,s,g = 0,0,0
    for info in NOC_dict[key]:
      if info['Medal'] == 'Bronze':
        b += 1
      elif info['Medal'] == 'Silver':
        s += 1
      elif info['Medal'] == 'Gold':
        g += 1
    medals[key] = (g, s, b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  top = []
  for medal in medals:
    info = medals[medal]
    top.append((medal, info[0], info[1], info[2]))
  top = sorted(top, key=lambda x: (-x[1], -x[2], -x[3], x[0][0], x[0][1], x[0][2]))
  topfive.extend(top[:5])
  gold, silver, bronze = top[4][1:]
  i = 1
  while top[i+4][1] == gold and top[i+4][2] == silver and top[i+4][3] == bronze:
    topfive.append(top[i+4])
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  years = []
  if start % 2 == 1:
    start += 1
  for year in range(start, end+1, 2):
    years.append(str(year))
  for year in years:
    medals = get_medals_by_team(athletes_by_Year_NOC, year)
    if NOC in medals:
      trend.append((year, medals[NOC][0], medals[NOC][1], medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year]:
      datas = athletes_by_Year_NOC[year][NOC]
      for data in datas:
        if data['Medal'] in ['Bronze', 'Silver', 'Gold']:
          sports.add(data['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532093321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', 1, 5, 12)], [('20040', 04, 5, 8), ('2004', 05, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 07, 9)],
 [('2002', 03, 07, 07), ('2006', 05, 07, 07), ('2008', 04, 03, 012)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1188, 'const': 1946, 'code+const': 3134}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in data :
        y = i[9]
        nc = i[7]
        ad = {'ID': i[0],'Name': i[1],'Sex': i[2],'Age': i[3],'Height': i[4],'Weight': i[5],'Team': i[6],'NOC': i[7],'Games': i[8],'Year': i[9],'Season': i[10],'City': i[11],'Sport': i[12],'Event': i[13],'Medal': i[14]}
        if y not in athletes_by_Year_NOC :
           athletes_by_Year_NOC[y] = {}
        if nc not in athletes_by_Year_NOC[y] :
            athletes_by_Year_NOC[y][nc] = []
        athletes_by_Year_NOC[y][nc].append(ad)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for i, j in athletes_by_Year_NOC[year].items() :
        medals[i] = (0, 0, 0)
        for k in j :
            if k['Medal'] == 'Gold' :
                medals[i] = (medals[i][0] + 1, medals[i][1], medals[i][2])
            elif k['Medal'] == 'Silver' :
                medals[i] = (medals[i][0], medals[i][1] + 1, medals[i][2])
            elif k['Medal'] == 'Bronze' :
                medals[i] = (medals[i][0], medals[i][1], medals[i][2] + 1)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    sm = sorted(medals.items() , key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))
    for i in range(len(sm)) :
        if i < 5 :
            topfive.append((sm[i][0], sm[i][1][0], sm[i][1][1], sm[i][1][2]))
        else:
            if sm[i][1] == sm[i-1][1] :
                topfive.append((sm[i][0], sm[i][1][0], sm[i][1][1], sm[i][1][2]))
            else:
                break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start+1, end) :
        if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)] :
            if "Gold" in athletes_by_Year_NOC[str(year)][NOC] :
                gold = athletes_by_Year_NOC[str(year)][NOC]["Gold"]
            else :
                gold = 0
            if "Silver" in athletes_by_Year_NOC[str(year)][NOC] :
                silver = athletes_by_Year_NOC[str(year)][NOC]["Silver"]
            else :
                silver = 0
            if "Bronze" in athletes_by_Year_NOC[str(year)][NOC] :
                bronze = athletes_by_Year_NOC[str(year)][NOC]["Bronze"]
            else :
                bronze = 0
            trend.append((str(year), gold, silver, bronze))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
        for i in athletes_by_Year_NOC[year][NOC] :
            if i['Medal'] != 'NA' :
                sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    ms = {}
    for i in NOCs :
        if year not in athletes_by_Year_NOC or i not in athletes_by_Year_NOC[year] :
            continue
        ats = athletes_by_Year_NOC[year][i]
        for j in ats :
            sport = j['Sport']
            medal = j['Medal']
            if medal == 'Gold' or medal == 'Silver' or medal == 'Bronze' :
                if sport not in ms :
                    ms[sport] = set()
                ms[sport].add(i)
    for i, j in ms.items() :
        if len(j) == len(NOCs) :
            sports.add(i)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530397821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.81
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('W', 0, 0, 1),
  ('X', 0, 0, 1), ('Y', 0, 0, 1), ('Z', 0, 0, 1)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'd' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'd' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'd' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1248, 'const': 1476, 'code+const': 2724}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for row in data[1:]:
        year = row[9]
        noc = row[7]
        athlete = {
            'ID': row[0],
            'Name': row[1],
            'Sex': row[2],
            'Age': row[3],
            'Height': row[4],
            'Weight': row[5],
            'Team': row[6],
            'NOC': row[7],
            'Games': row[8],
            'Year': row[9],
            'Season': row[10],
            'City': row[11],
            'Sport': row[12],
            'Event': row[13],
            'Medal': row[14]
        }
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(athlete)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc,athlete in athletes_by_Year_NOC[year].items():
    for athlete1 in athlete:
      medal = athlete1["Medal"]
      if medal is not None:
        if noc not in medals:
          medals[noc] = [0, 0, 0]
        if medal == 'Gold':
          medals[noc][0] += 1
        elif medal == 'Silver':
          medals[noc][1] += 1
        elif medal == 'Bronze':
          medals[noc][2] += 1
  for noc, medal2 in medals.items():
        medals[noc] = tuple(medal2)
  return medals
#======================================
def get_top_five(medals):
    top_five = []
    for team, medal_counts in sorted(medals.items()):
        noc, gold, silver, bronze = team, medal_counts[0], medal_counts[1], medal_counts[2]
        inserted = False
        for i in range(len(top_five)):
            if gold > top_five[i][1]:
                top_five.insert(i, (noc, gold, silver, bronze))
                inserted = True
                break
            elif gold == top_five[i][1]:
                if silver > top_five[i][2]:
                    top_five.insert(i, (noc, gold, silver, bronze))
                    inserted = True
                    break
                elif silver == top_five[i][2]:
                    if bronze > top_five[i][3]:
                        top_five.insert(i, (noc, gold, silver, bronze))
                        inserted = True
                        break
        if not inserted :
            top_five.append((noc, gold, silver, bronze))
    for j in range(len(top_five)-1):
        name=set()
        if top_five[j][1:]==top_five[j+1][1:]:
            top_five1=top_five[:j+2]
        elif top_five[j][1:]!=top_five[j+1][1:] and j==5 :
            top_five1=top_five[:5]
            break
    top_five=top_five1
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  year=[i for i in range(start,end+1)]
  for e in year:
    if str(e) not in athletes_by_Year_NOC  :
        pass
    elif NOC not in athletes_by_Year_NOC[str(e)]:
        pass
    else:
        m = get_medals_by_team(athletes_by_Year_NOC, str(e))
        gold,sliver,bronze=list(m[NOC])
        trend.append((str(e),gold,sliver,bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC  :
        return sports
  elif NOC not in athletes_by_Year_NOC[str(year)]:
        return sports
  for i in range(len(d[str(year)][str(NOC)])):
      if d[str(year)][str(NOC)][i]['Medal'] != 'NA':
          sports.add((d[str(year)][str(NOC)][i]['Sport']))
      else:
          pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs=sorted(NOCs)
  sports=set(get_sports(athletes_by_Year_NOC, NOCs[0], year))
  for i in range(1,len(NOCs)):
      set1 = set(get_sports(athletes_by_Year_NOC, NOCs[i], year))
      sports &= set1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532067021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.85
[[('2004', 1, 5, 12)],
 [('2000', 4, 5, 8), ('2002', 0, 0, 0), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2004', 0, 0, 0), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 708, 'const': 756, 'code+const': 1464}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for k in range (1,len(data)) :
    fu = firstdatalist(data,k)
    if not data[k][9] in athletes_by_Year_NOC :
      athletes_by_Year_NOC[data[k][9]] = {data[k][7]:[fu]}
    else :
      if data[k][7] in athletes_by_Year_NOC[data[k][9]] :
        athletes_by_Year_NOC[data[k][9]][data[k][7]].append(fu)
      elif not data[k][7] in athletes_by_Year_NOC[data[k][9]] :
        athletes_by_Year_NOC[data[k][9]][data[k][7]] = [fu]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for k in athletes_by_Year_NOC[year] :
      g = 0
      s = 0
      b = 0
      for i in range (len(athletes_by_Year_NOC[year][k])) :
        if athletes_by_Year_NOC[year][k][i]['Medal'] == "Gold" : g += 1
        elif athletes_by_Year_NOC[year][k][i]['Medal'] == "Silver" : s += 1
        elif athletes_by_Year_NOC[year][k][i]['Medal'] == "Bronze" : b += 1
      medals[k] = (g,s,b) 
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range (start,end+1) :
        if str(y) in athletes_by_Year_NOC :
            if not NOC in athletes_by_Year_NOC[str(y)] :
                trend.append((str(y),)+ (0,0,0))
            else :
                trend.append((str(y),)+ get_medals_by_team(athletes_by_Year_NOC,str(y))[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
      for i in athletes_by_Year_NOC[year][NOC] :
          if i['Medal'] != 'NA' :
              sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def firstdatalist(data,k):
  dib = {}
  for i in range (len(data[0])) :
    dib[data[0][i]] = data[k][i]
  return dib

6532069321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0NameError("name 'medals' is not defined")
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0NameError("name 'medals' is not defined")
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 872, 'const': 1012, 'code+const': 1884}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  topfive = []
  reversemedals={}
  count=0
  for i in medals:
    if medals[i] not in reversemedals:
      reversemedals[medals[i]]=[i]
    else:
      reversemedals[medals[i]].append(i)
  sortedlist=sorted(reversemedals.keys(),reverse=True)
  for i in sortedlist:
    count += 1
    if count>5:
      break
    reversemedals[i].sort()
    for j in reversemedals[i]:
      topfive.append((j,i[0],i[1],i[2]))
    if len(reversemedals[i])!=1:
      count += 1
  return topfive
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  gm=0
  sm=0
  bm=0
  if year in athletes_by_Year_NOC:
    for i in athletes_by_Year_NOC[year]:
      for j in athletes_by_Year_NOC[year][i]:
        check=j['Medal']
        if check=='Gold':
          gm +=1
        elif check=='Silver':
          sm +=1
        elif check=='Bronze':
          bm +=1
      medals[i]=(gm,sm,bm)
      gm=0
      sm=0
      bm=0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  reversemedals={}
  count=0
  for i in medals:
    if medals[i] not in reversemedals:
      reversemedals[medals[i]]=[i]
    else:
      reversemedals[medals[i]].append(i)
  sortedlist=sorted(reversemedals.keys(),reverse=True)
  for i in sortedlist:
    count += 1
    if count>5:
      break
    reversemedals[i].sort()
    for j in reversemedals[i]:
      topfive.append((j,i[0],i[1],i[2]))
    if len(reversemedals[i])!=1:
      count += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            if int(year) >= start and int(year) <=end:
                dictt=get_medals_by_team(athletes_by_Year_NOC, year)
                ans=dictt[NOC]
                trend.append((year,ans[0],ans[1],ans[2]))
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal']!="NA":
        sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  nocset=[]
  for i in NOCs:
    s=get_sports(athletes_by_Year_NOC,i,year)
    nocset.append(s)
  check=nocset[0]
  for sett in nocset:
    sports = check.intersection(sett)
    check = sett
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6430010821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')] ... (more)
convert_to_dict_020.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'TG'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010') ... (more)
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 974, 'const': 1285, 'code+const': 2259}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1, len(data)):
    d = {}
    year = data[i][9]
    team = data[i][7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if team not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][team] = []
    for j in range(len(data[0])):
      d[data[0][j]] = data[i][j]
      athletes_by_Year_NOC[year][team].append(d)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  NOC_dict = athletes_by_Year_NOC[year]
  for NOC in NOC_dict:
    gold,silver,bronze = 0,0,0
    for i in range(len(NOC_dict[NOC])):
      if NOC_dict[NOC][i]["Medal"] == "Gold":
        gold += 1
      if NOC_dict[NOC][i]["Medal"] == "Silver":
        silver += 1
      if NOC_dict[NOC][i]["Medal"] == "Bronze":
        bronze += 1
    medals[NOC] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
    topfive,check = [],[]
    sorted_medals = sorted(medals.items(), key=lambda x: x[1], reverse=True)
    idx = 0
    while(len(check) != 5) :
        if sorted_medals[idx][1] not in check :
            check.append(sorted_medals[idx][1])
        idx += 1
    idx = 0
    while(idx < 5) :
        sort_NOC = []
        if len(topfive) >= 5 :
            break
        for data in medals :
            if medals[data] == check[idx] :
                sort_NOC.append(data)
            sort_NOC.sort()
        for NOC in sort_NOC :
            topfive.append((NOC, check[idx][0], check[idx][1], check[idx][2]))
        idx += 1  
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end + 1):
    if str(year) in athletes_by_Year_NOC:
      NOC_dict = athletes_by_Year_NOC[str(year)]
      if NOC in NOC_dict:
        gold, silver, bronze = 0, 0, 0
        for data in NOC_dict[NOC]:
          if data["Medal"] == "Gold":
            gold += 1
          elif data["Medal"] == "Silver":
            silver += 1
          elif data["Medal"] == "Bronze":
            bronze += 1
        trend.append((str(year), gold, silver, bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            data = athletes_by_Year_NOC[year][NOC]
            for i in range(len(data)):
                if data[i]["Medal"] != "NA":
                    sports.add(data[i]["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    NOCs = list(NOCs)
    sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
    for i in range(1, len(NOCs)):
        path = get_sports(athletes_by_Year_NOC, NOCs[i], year)
        sports = sports & path
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6430169021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_010.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 758, 'const': 922, 'code+const': 1680}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  dict_list = []
  for x in data[1:]:
    dict_list += [{data[0][i]: x[i] for i in range(len(x))}]
  for x in dict_list:
    if x["Year"] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[x["Year"]] = {}
    if x["NOC"] not in athletes_by_Year_NOC[x["Year"]]:
      athletes_by_Year_NOC[x["Year"]][x["NOC"]] = []
    athletes_by_Year_NOC[x["Year"]][x["NOC"]] += [dict(x)]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for n, a_list in athletes_by_Year_NOC[year].items():
    g, s, b = 0, 0, 0
    for a in a_list:
      g += 1 if a["Medal"] == "Gold" else 0
      s += 1 if a["Medal"] == "Silver" else 0
      b += 1 if a["Medal"] == "Bronze" else 0
    medals[n] = (g, s, b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals = [(g, s, b, n) for (n, (g, s, b)) in medals.items()]
  medals = sorted(medals, key=lambda a: (-a[0], -a[1], -a[2], a[3]))
  pg, ps, pb = 0, 0, 0
  for g, s, b, n in medals:
    if len(topfive) < 5:
      topfive += [(n, g, s, b)]
      pg = g
      ps = s
      pb = b
    else:
      if (g, s, b) == (pg, ps, pb):
        topfive += [(n, g, s, b)]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start % 2 == 1:
    start += 1
  for y in range(start, end + 1, 2):
    if str(y) not in athletes_by_Year_NOC:
      continue
    x = get_medals_by_team(athletes_by_Year_NOC, str(y))
    if NOC not in x:
      continue
    g, s, b = x[NOC]
    trend += [(str(y), g, s, b)]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530251821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0ValueError('max() arg is an empty sequence')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0TypeError("'NoneType' object is not iterable")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0TypeError("'NoneType' object is not iterable")
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1580, 'const': 1895, 'code+const': 3475}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data:
    if "0" <= i[0][0] <= "9":
        if i[9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[i[9]] = {i[7]:[{'ID': i[0], 'Name': i[1], 'Sex': i[2], 'Age': i[3], 'Height': i[4], 'Weight': i[5], 'Team': i[6], 'NOC': i[7], 'Games': i[8], 'Year': i[9], 'Season': i[10], 'City': i[11], 'Sport': i[12], 'Event': i[13], 'Medal': i[14]}]}
        else:
            if i[7] not in athletes_by_Year_NOC[i[9]]:
                athletes_by_Year_NOC[i[9]][i[7]] = [{'ID': i[0], 'Name': i[1], 'Sex': i[2], 'Age': i[3], 'Height': i[4], 'Weight': i[5], 'Team': i[6], 'NOC': i[7], 'Games': i[8], 'Year': i[9], 'Season': i[10], 'City': i[11], 'Sport': i[12], 'Event': i[13], 'Medal': i[14]}]
            else:
                athletes_by_Year_NOC[i[9]][i[7]].append({'ID': i[0], 'Name': i[1], 'Sex': i[2], 'Age': i[3], 'Height': i[4], 'Weight': i[5], 'Team': i[6], 'NOC': i[7], 'Games': i[8], 'Year': i[9], 'Season': i[10], 'City': i[11], 'Sport': i[12], 'Event': i[13], 'Medal': i[14]})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  y = athletes_by_Year_NOC[year]
  for i in y.keys():
    g = 0
    s = 0
    b = 0
    for k in range(len(y[i])):
        if y[i][k]["Medal"] == "Gold":
            g += 1
        if y[i][k]["Medal"] == "Silver":
            s += 1
        if y[i][k]["Medal"] == "Bronze":
            b += 1
    medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  alls = []
  sc = []
  top = []
  allsn = {}
  test = 0
  for x,y in medals.items():
    alls.append((x,y))
    sc.append(int(y[0])*10000000+int(y[1])*1000+int(y[2])*1)
  alls.sort()
  for i in alls:
    allsn[i[0]] = int(i[1][0])*10000000+int(i[1][1])*1000+int(i[1][2])*1
  fin = set(sc)
  for i in range(5):
    top.append(max(fin))
    fin -= {max(fin)}
  for k in top:
    if len(topfive) <= 5:
        for i,j in allsn.items():
            if j == k:
                topfive.append((i,j//10000000,(j%10000000)//1000,((j%10000000)%1000)))  
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  ally = list(range(start,end+1))
  for i in ally:
    if str(i) in athletes_by_Year_NOC:
        x = get_medals_by_team(athletes_by_Year_NOC, str(i))
        if NOC in x:
          trend.append((str(i),x[NOC][0],x[NOC][1],x[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    x = athletes_by_Year_NOC[year][NOC]
    for i in range(len(x)):
      if x[i]['Medal'] == "Gold" or x[i]['Medal'] == "Silver" or x[i]['Medal'] == "Bronze":
        sports.add(x[i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  alls ={}
  for i in NOCs:
    if year in athletes_by_Year_NOC and i in athletes_by_Year_NOC[year]:
      x = athletes_by_Year_NOC[year][i]
      for k in range(len(x)):
        if x[k]['Sport'] not in alls and x[k]['Medal'] == "Gold" or x[k]['Medal'] == "Silver" or x[k]['Medal'] == "Bronze":
            alls[x[k]['Sport']] = 0
      x = NOCs.remove(i)
      break
  for i in x:
    if year in athletes_by_Year_NOC and i in athletes_by_Year_NOC[year]:
      x = athletes_by_Year_NOC[year][i]
      for k in range(len(x)):
          if x[k]['Sport'] in alls and x[k]['Medal'] == "Gold" or x[k]['Medal'] == "Silver" or x[k]['Medal'] == "Bronze":
              alls[x[k]['Sport']] += 1
    for x,y in alls.items():
      if y != 0:
        sports.add(x) 
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530292521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'data' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'data' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1208, 'const': 1207, 'code+const': 2415}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  year = set(data[i][9] for i in range(1, len(data)))
  for i in year:
    athletes_by_Year_NOC[i]= {}
  for i in range(1,len(data)):
    athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
  for i in range(1,len(data)):
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append({})
    for j in range(len(data[0])):
      athletes_by_Year_NOC[data[i][9]][data[i][7]][-1][data[0][j]] = data[i][j]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return medals
  countries = set(athletes_by_Year_NOC[year])
  for i in countries:
    g,s,b = 0,0,0
    for j in range(len(athletes_by_Year_NOC[year][i])):
      if athletes_by_Year_NOC[year][i][j]['Medal'] == "Gold":
        g += 1
      elif athletes_by_Year_NOC[year][i][j]['Medal'] == "Silver":
        s += 1
      elif athletes_by_Year_NOC[year][i][j]['Medal'] == "Bronze":
        b += 1
      else:
        continue
    medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals_list = []
  if len(medals) == 0:
    return topfive
  for i in medals:
    medals_list.append((-medals[i][0], -medals[i][1], -medals[i][2], i))
  medals_list.sort()
  i = 4
  while True:
    if medals_list[i][0:2] == medals_list[i+1][0:2]:
      i += 1
    else:
      break
  for j in range(i+1):
    topfive.append((medals_list[j][-1], -medals_list[j][0], -medals_list[j][1], -medals_list[j][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  year = set(data[i][9] for i in range(1, len(data)))
  yearlist = list(year)
  yearlist.sort()
  for y in yearlist:
    if start <= int(y) <= end:
      if NOC in list(get_medals_by_team(athletes_by_Year_NOC, y)):
        g,s,b = get_medals_by_team(athletes_by_Year_NOC, y)[NOC]
        trend.append((y, g, s, b))
      else:
        continue
    else:
      continue
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  if NOC not in athletes_by_Year_NOC[year]:
    return sports
  for i in range(len(athletes_by_Year_NOC[year][NOC])):
    if athletes_by_Year_NOC[year][NOC][i]['Medal'] != 'NA':
      sports.add(athletes_by_Year_NOC[year][NOC][i]['Sport'])
    else:
      continue
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_sports = []
  if year not in athletes_by_Year_NOC:
    return sports
  for c in NOCs:
    list_sports.append(set())
    if c not in athletes_by_Year_NOC[year]:
      return sports
    else:
      for i in range(len(athletes_by_Year_NOC[year][c])):
        if athletes_by_Year_NOC[year][c][i]['Medal'] != 'NA':
          list_sports[-1].add(athletes_by_Year_NOC[year][c][i]['Sport'])
        else:
          continue
  sports = list_sports[0]
  for s in list_sports:
    sports = sports.intersection(s)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530368621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0NameError("name 'data' is not defined")
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0NameError("name 'data' is not defined")
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1166, 'const': 1029, 'code+const': 2195}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    indexyear = data[0].index("Year")
    indexnoc = data[0].index("NOC")
    for i in range(1,len(data)) :
        if data[i][indexyear] not in athletes_by_Year_NOC.keys() :
            NOC = {}
            NOC[data[i][indexnoc]] = [d1(data[i])]
            athletes_by_Year_NOC[data[i][indexyear]] = NOC
        elif data[i][indexnoc] not in  athletes_by_Year_NOC[data[i][indexyear]]:
            athletes_by_Year_NOC[data[i][indexyear]][data[i][indexnoc]] = [d1(data[i])]
        else :
            x = d1(data[i])
            athletes_by_Year_NOC[data[i][indexyear]][data[i][indexnoc]].append(x)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for j in athletes_by_Year_NOC[year] :
        gold = 0
        sil = 0
        bronze = 0
        for k in athletes_by_Year_NOC[year][j] :
            if k["Medal"] == "Gold" :
                gold += 1
            elif k["Medal"] == "Silver" :
                sil += 1
            elif k["Medal"] == "Bronze" :
                bronze += 1
        medals[j] = (gold,sil,bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    temp1 = []
    for i in medals :
        temp1.append([medals[i][0],medals[i][1],medals[i][2],i])
    temp1.sort(reverse=True)  
    temp2 = [(d,a,b,c) for a,b,c,d in temp1]
    count = 1
    k = 0
    while count <= 5 :
        if temp2[k][1:] > temp2[k+1][1:] :
            if temp2[k]  not in topfive :
                topfive.append(temp2[k])
            k += 1
            count += 1
        elif temp2[k][1:] == temp2[k+1][1:] :
            x = []
            while temp2[k][1:] == temp2[k+1][1:] :
                x.append(temp2[k])
                k += 1
            x.append(temp2[k])
            x.sort()
            for l in x :
                topfive.append(tuple(l))
            count += 1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1,1) :
        if str(year) in athletes_by_Year_NOC.keys() :
            temp1 = get_medals_by_team(athletes_by_Year_NOC,str(year))
            if NOC in temp1 :
                trend.append( (str(year) , temp1[NOC][0] , temp1[NOC][1] , temp1[NOC][2]) )
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            for i in athletes_by_Year_NOC[year][NOC] :
                if i["Medal"] != "NA" :
                    sports.add(i["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    count = 1
    for i in NOCs :
        if count == 1 :
            sports = sports.union(get_sports(athletes_by_Year_NOC,i,year))
            count += 1
        else :
            sports = sports.intersection(get_sports(athletes_by_Year_NOC,i,year))
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def d1(x) :
    d1 = {}
    for j in range(len(x)) :
        d1[data[0][j]] = x[j]
    return d1

6530389821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0NameError("name 'athlestes_by_Year_NOC' is not defined")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'athlestes_by_Year_NOC' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'athlestes_by_Year_NOC' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 776, 'const': 1056, 'code+const': 1832}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    headings = data[0]
    athletes_by_Year_NOC = {}
    for row in data[1:]:
        year = row[9]
        noc = row[7]
        athlete = {}
        for i in range(len(headings)):
            athlete[headings[i]] = row[i]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(athlete)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athlestes_by_Year_NOC[year]:
        NOC_medal = [0, 0, 0]
        for atheltes in athlestes_by_Year_NOC[year][NOC]:
            if atheltes['Medal'] == "Gold":
                NOC_medal[0] += 1
            elif atheltes['Medal'] == "Silver":
                NOC_medal[1] += 1
            elif atheltes['Medal'] == "Bronze":
                NOC_medal[2] += 1
        medals[NOC] = tuple(NOC_medal)
  return medals
#======================================
def get_top_five(medals):
    topfive = []
    rankByMedal = {}
    for country, medalList in medals.items():
        rank = medalList
        if medalList not in rankByMedal:
            rankByMedal[medalList] = []
        rankByMedal[medalList].append(country)
    for rank in sorted(rankByMedal.keys(), reverse=True):
        if len(topfive) >= 5:
            break
        for country in sorted(rankByMedal[rank]):
            topfive.append((country, rank[0], rank[1], rank[2]))  
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
      if year % 2 != 0:
        continue
      medals_by_team = get_medals_by_team(athletes_by_Year_NOC, str(year))
      if NOC not in medals_by_team:
        continue
      else:
        medals = medals_by_team[NOC]
        trend.append((str(year), medals[0], medals[1], medals[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
        return sports
    for athlete in athletes_by_Year_NOC[year][NOC]:
        if athlete['Medal'] != 'NA':
            sports.add(athlete['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sportsByNoc = []
    for NOC in NOCs:
        sportsByNoc.append(get_sports(athletes_by_Year_NOC, NOC, year))
    sports = sportsByNoc[0]
    for i in range(1, len(sportsByNoc)):
        sports = sports.intersection(sportsByNoc[i])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532009721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type0.0NameError("name 'data' is not defined")
[<class 'set'>]
get_sports_010.0NameError("name 'data' is not defined")
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0NameError("name 'data' is not defined")
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1178, 'const': 1475, 'code+const': 2653}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1, len(data)):
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {}
        if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(
                {
                    "ID": data[i][0],
                    "Name": data[i][1],
                    "Sex": data[i][2],
                    "Age": data[i][3],
                    "Height": data[i][4],
                    "Weight": data[i][5],
                    "Team": data[i][6],
                    "NOC": data[i][7],
                    "Games": data[i][8],
                    "Year": data[i][9],
                    "Season": data[i][10],
                    "City": data[i][11],
                    "Sport": data[i][12],
                    "Event": data[i][13],
                    "Medal": data[i][14],
                }
            )
        else:
            athletes_by_Year_NOC[data[i][9]][data[i][7]] = [
                {
                    "ID": data[i][0],
                    "Name": data[i][1],
                    "Sex": data[i][2],
                    "Age": data[i][3],
                    "Height": data[i][4],
                    "Weight": data[i][5],
                    "Team": data[i][6],
                    "NOC": data[i][7],
                    "Games": data[i][8],
                    "Year": data[i][9],
                    "Season": data[i][10],
                    "City": data[i][11],
                    "Sport": data[i][12],
                    "Event": data[i][13],
                    "Medal": data[i][14],
                }
            ]
    return athletes_by_Year_NOC
# ======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC:
        return medals
    for NOC in athletes_by_Year_NOC[year].keys():
        medal_gold = 0
        medal_silver = 0
        medal_bronze = 0
        medal_na = 0
        for i in athletes_by_Year_NOC[year][NOC]:
            medal = i["Medal"]
            if medal == "Gold":
                medal_gold += 1
            elif medal == "Silver":
                medal_silver += 1
            elif medal == "Bronze":
                medal_bronze += 1
            elif medal == "NA":
                medal_na += 1
        medals[NOC] = (medal_gold, medal_silver, medal_bronze)
    return medals
# ======================================
def get_top_five(medals):
    topfive = []
    new_list = []
    for NOC in medals:
        new_list.append((-medals[NOC][0], -medals[NOC][1], -medals[NOC][2], NOC))
    new_list.sort()
    for gold, silver, bronze, NOC in new_list[:5]:
        topfive.append((NOC, -gold, -silver, -bronze))
    for gold, silver, bronze, NOC in new_list[5:]:
        if (
            -gold == topfive[-1][1]
            and -silver == topfive[-1][2]
            and -bronze == topfive[-1][3]
        ):
            topfive.append((NOC, -gold, -silver, -bronze))
        else:
            break
    return topfive
# ======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end + 1):
        info = get_medals_by_team(athletes_by_Year_NOC, str(year))
        if NOC in info:
            medal = info[NOC]
            gold, silver, broze = medal[0], medal[1], medal[2]
            trend.append((str(year), gold, silver, broze))
    return trend
# ======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    info = get_medals_by_team(
        athletes_by_Year_NOC, year
    )  # info = รวมข้อมูลเหรียญแต่ละประเทศ
    if NOC in info:
        if info[NOC] != (0, 0, 0):
            d = convert_to_dict(data)
            for i in athletes_by_Year_NOC[year][NOC]:
                if i["Medal"] != "NA":
                    sports.add(i["Sport"])
    return sports
# ======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    L = []
    for i in NOCs:
        L.append(get_sports(athletes_by_Year_NOC, i, year))
    sports = set.intersection(*L)
    return sports
# ======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532030821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'trend' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'trend' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 886, 'const': 1663, 'code+const': 2549}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  data_use=[]
  for i in data:
    key=data[0]
    data_use.append(i)
  athletes_by_Year_NOC = {}
  nested_list=[]
  nested_list_answer=[]
  keyanswer=[]
  for n in key:
    if n not in ['Year','NOC']:
      keyanswer.append(n)
  for i in data_use:
    if i != key:
      nested_list.append(i)
      nested_list_before=i
      nested_list_before_answer=[]
      for x in range(len(key)):
        if x not in [7,9]:
          nested_list_before_answer.append(nested_list_before[x])
      nested_list_answer.append(nested_list_before_answer)
  for i in nested_list:
    for k in range(len(key)):
      key[k] = i[k]
    if key[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[key[9]]={}
    if key[7] not in athletes_by_Year_NOC[key[9]]:
      athletes_by_Year_NOC[key[9]][key[7]]=[]
    athletes_by_Year_NOC[key[9]][key[7]].append({
        'ID': i[0],'Name': i[1],'Sex': i[2],'Age': i[3],
        'Height': i[4],'Weight': i[5],'Team': i[6],'NOC': i[7],
        'Games': i[8],'Year': i[9],'Season': i[10],'City': i[11],
        'Sport': i[12],'Event': i[13],'Medal': i[14]
    })
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year]:
    G=0
    S=0
    B=0
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal']=='Gold':
         G+=1
      elif i['Medal']=='Silver':
         S+=1
      elif i['Medal']=='Bronze':
        B+=1
    medals[NOC]=(G,S,B)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if int(year) not in [2000,2002,2004,2006,2008,2010,2012,2014,2016]:
    return sports
  if NOC not in athletes_by_Year_NOC[year]:
    return sports
  for i in athletes_by_Year_NOC[year][NOC]:
    if i['Medal'] != 'NA':
      sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports_count = set()
  if int(year) not in [2000,2002,2004,2006,2008,2010,2012,2014,2016]:
      return sports
  for i in NOCs: 
    if i not in athletes_by_Year_NOC[year]:
      return sports
    for d in athletes_by_Year_NOC[year][i]:
      if d['Medal'] != 'NA':
        sports_count.add(d['Sport'])
  for n in sports_count:
    count=0
    for i in NOCs: 
      sports_specific_count=set()
      for d in athletes_by_Year_NOC[year][i]:
        if d['Medal'] != 'NA':
          sports_specific_count.add(d['Sport'])
      if n in sports_specific_count:
        count +=1
    if count==len(NOCs):
      sports.add(n)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532074421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[[('C', 1, 1, 1]), [('E', 1, 1, 1]), [('DA', 1, 1, 0]), [('AB', 1, 1, 0]), [('BD', 1, 1, 0])],
 [[('B', 1, 1, 1]), [('A', 1, 1, 0]), [('D', 1, 0, 1]), [('F', 1, 0, 0]), [('C', 0, 1, 0])],
 [[('C', 9, 10, 9]), [('E', 9, 10, 8]), [('A', 9, 9, 9]), [('F', 9, 7, 9]), [('B', 9, 2, 1]), [('D', 9, 2, 1])],
 [[('Q', 3, 3, 3]), [('FA', 3, 2, 1]), [('KB', 3, 2, 1]), [('JF', 3, 2, 1]), [('SJ', 3, 2, 1]), [('ZK', 3, 2, 1]),
  [('BM', 3, 2, 1]), [('AN', 3, 2, 1]), [('MS', 3, 2, 1]), [('NZ', 3, 2, 1])]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'E', 'F', 'I'], ['E', 'H', 'I', 'J', 'U']]
get_common_sports_020.0
[[<class 'set'>, 'E', 'F', 'I'], ['E', 'H', 'I', 'J', 'U']]
bytecount: {'code': 762, 'const': 1112, 'code+const': 1874}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data_file = ['ID','Name','Sex','Age','Height','Weight','Team','NOC','Games','Year','Season','City','Sport','Event','Medal']
  for data_file in data[1:]:
    Year = data_file[9]
    NOC = data_file[7]
    if Year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[Year] = {}
    if NOC not in athletes_by_Year_NOC[Year]:
      athletes_by_Year_NOC[Year][NOC] = []
    ath_data = {}
    for i in range(len(data_file)):
      ath_data[data[0][i]] = data_file[i]
    athletes_by_Year_NOC[Year][NOC].append(ath_data)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC.get(year ,{}):
    gold,silver,bronze = [0,0,0]
    for athletes in athletes_by_Year_NOC[year][NOC]:
      if athletes.get('Medal') == 'Gold':
        gold += 1
      if athletes.get('Medal') == 'Silver':
        silver +=1
      if athletes.get('Medal') == 'Bronze':
        bronze +=1
    medals[NOC] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  rankm = {}
  for countries in medals:
    medalcount = medals[countries]
    if(not medalcount in rankm):
      rankm[medalcount] = []
    rankm[medalcount].append(countries)
  sortcount = sorted_counts = sorted(rankm.keys(), reverse=True)
  for r in sortcount:
    if len(topfive) >= 5:
      break
    nation = rankm[r]
    nation.sort
    for country in nation:
      topfive.append(([country,r[0],r[1],r[2]]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if year % 2 ==0 :
      medals_by_team = get_medals_by_team(athletes_by_Year_NOC, str(year))
      if NOC in medals_by_team:
        medals = medals_by_team[NOC]
        trend.append((str(year),medals[0],medals[1],medals[2]))
    else:
      continue
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  if NOC not in athletes_by_Year_NOC[year]:
    return sports
  for athlete in athletes_by_Year_NOC[year][NOC]:
    if athlete['Medal'] != 'NA':
      sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports_b_NOC = list()
  for NOC in NOCs:
    sports_b_NOC.append(get_sports(athletes_by_Year_NOC, NOC, year))
  for sport in sports_b_NOC:
    sports = set.intersection(sport)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532102321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1086, 'const': 849, 'code+const': 1935}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  use = {}
  u = {}
  for e in data[1:]:
    use = {}
    for i in range(len(data[0])):
      use[data[0][i]] = e[i]
    if e[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[e[9]] = {}
      athletes_by_Year_NOC[e[9]][e[7]] = []
      athletes_by_Year_NOC[e[9]][e[7]].append(use)
    else :
      if e[7] not in athletes_by_Year_NOC[e[9]]:
        athletes_by_Year_NOC[e[9]][e[7]] = []
        athletes_by_Year_NOC[e[9]][e[7]].append(use)
      else:
        athletes_by_Year_NOC[e[9]][e[7]].append(use)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  nnoc = {}
  me = []
  y = athletes_by_Year_NOC[year]
  for i in y:
    g =0
    s =0
    b =0
    for e in y[i]:
      if e['Medal'] == 'Gold':
        g += 1
      elif e['Medal'] == 'Silver':
        s += 1
      elif e['Medal'] == 'Bronze':
        b += 1
      else:
        pass
    medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  topp = []
  oul = []
  re = []
  nnoc = []
  coop = []
  for i in medals:
    topp.append(medals[i])
  for x,y,z in topp:
    oul += [[-x,-y,-z]]
  for e in medals:
    nnoc.append(e)
  for q in range(len(nnoc)):
    coop += [[oul[q],nnoc[q]]]
  coop.sort()
  cho = coop[:5]
  if coop[4][0] == coop[5][0]:
    for p in range(5,len(coop)-1):
      if coop[p][0] == coop[p][0]:
        cho.append(coop[p])
      else:
        cho.append(coop[p])
        break
  for [a,b,c],n in cho:
    topfive.append((n,-a,-b,-c))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  a = []
  for i in range(int(start),int(end)+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        m = get_medals_by_team(d, str(i))
        for w in m:
          if w == NOC:
            trend.append((str(i),m[NOC][0],m[NOC][1],m[NOC][2]))
          else:
            pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  u = []
  g = ['Gold','Silver','Bronze']
  if year in athletes_by_Year_NOC:
    m = athletes_by_Year_NOC[year]
    if NOC in athletes_by_Year_NOC[year]:
      n = m[NOC]
      for i in range(len(n)):
        if n[i]['Medal'] in g:
          sports.add(n[i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  n = []
  for i in NOCs:
    m = get_sports(athletes_by_Year_NOC, i, year)
    n.append(m)
    sports = m
  for e in n:
    sports = e & sports
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532109821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'E', 'F', 'H', 'I', 'J', 'U'], ['E', 'H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'E', 'F', 'H', 'I', 'J', 'U'], ['E', 'H', 'I']]
bytecount: {'code': 902, 'const': 1271, 'code+const': 2173}
check_import({'allowable': ['math', 'csv']}) deep: [[('typing', 1)]]
from typing import Hashable
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  xlist=[]
  for i in range(len(data)):
    if i == 0:pass
    else:
      x={}
      for g in range(len(data[i])):
        x[data[0][g]]=data[i][g]
      xlist.append(x)
  for u in xlist:
    if u['Year'] not in athletes_by_Year_NOC:
      nocdict={}
      nocdict[u['NOC']]=[u]
      athletes_by_Year_NOC[u['Year']]=nocdict
    elif u['Year'] in athletes_by_Year_NOC:
      if u['NOC'] not in athletes_by_Year_NOC[u['Year']]:
        athletes_by_Year_NOC[u['Year']][u['NOC']]=[u]
      elif u['NOC'] in athletes_by_Year_NOC[u['Year']]:
        athletes_by_Year_NOC[u['Year']][u['NOC']].append(u)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
    g=0
    s=0
    b=0
    for e in athletes_by_Year_NOC[year][i]:
      if e['Medal']=='NA':pass
      elif e['Medal']=='Gold':
        g+=1
      elif e['Medal']=='Silver':
        s+=1
      elif e['Medal']=='Bronze':
        b+=1
    medals[i]=(g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  pass
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in athletes_by_Year_NOC:
    if int(i)>=int(start) and int(i)<= int(end):
      for r in athletes_by_Year_NOC[i]:
        if r == NOC:
          g=0
          s=0
          b=0
          for e in athletes_by_Year_NOC[i][NOC]:
            if e['Medal']=='NA':pass
            elif e['Medal']=='Gold':
              g+=1
            elif e['Medal']=='Silver':
              s+=1
            elif e['Medal']=='Bronze':
              b+=1
          y=(i,g,s,b)
          trend.append(y)
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]:
        if i['Medal'] == 'NA': pass
        else:
            sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  s = []
  s1=[]
  sports=set()
  if year in athletes_by_Year_NOC:
    for e in NOCs:
      if e in athletes_by_Year_NOC[year]:
        for i in athletes_by_Year_NOC[year][e]:
          if i['Medal'] == 'NA': pass
          else:
            if i['Sport'] not in s:
              s.append(i['Sport'])
            else: 
              s1.append(i['Sport'])
  for k in s1:
    sports.add(k)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532128721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('PK', 3, 2, 1),
  ('M', 3, 2, 01), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 868, 'const': 862, 'code+const': 1730}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    headers = data[0]
    for entry in data[1:]:
        Year = entry[headers.index('Year')]
        NOC = entry[headers.index('NOC')]
        if Year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[Year] = {}
        if NOC not in athletes_by_Year_NOC[Year]:
            athletes_by_Year_NOC[Year][NOC] = []
        new_entry = {headers[i]: entry[i] for i in range(len(headers))}
        athletes_by_Year_NOC[Year][NOC].append(new_entry)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC in athletes_by_Year_NOC[year]:
        counts = [            len([athlete for athlete in athletes_by_Year_NOC[year][NOC] if athlete['Medal'] == medal])
            for medal in ['Gold', 'Silver', 'Bronze']
        ]
        medals[NOC] = tuple(counts)
    return medals
#======================================
def get_top_five(medals):
  rankByMedal = {}
  for country in medals:
    medalList = medals[country]
    if medalList not in rankByMedal:
      rankByMedal[medalList] = list()
    rankByMedal[medalList].append(country)
  topfive = []
  rank_keys = sorted(rankByMedal.keys(), reverse=True)
  for i in range(5):
    if i >= len(rank_keys):
      break
    rank = rank_keys[i]
    for country in sorted(rankByMedal[rank]):
      topfive.append(tuple([country, rank[0], rank[1], rank[2]]))
      if len(topfive) >= 5:
        break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    year = start
    while year <= end:
        if year % 2 == 0 and NOC in get_medals_by_team(athletes_by_Year_NOC, str(year)):
            medals = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
            trend.append((str(year), medals[0], medals[1], medals[2]))
        year += 1
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = []
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for athletes in athletes_by_Year_NOC[year][NOC]:
      if athletes['Medal'] != 'NA':
        sports.append(athletes['Sport'])
  return set(sports)
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sports_by_noc = {}
    for NOC in NOCs:
        if NOC in athletes_by_Year_NOC and year in athletes_by_Year_NOC[NOC]:
            sports_for_noc = athletes_by_Year_NOC[NOC][year]
            sports_by_noc[NOC] = set(sports_for_noc)
    if sports_by_noc:
        sports = sports_by_noc[list(sports_by_noc.keys())[0]]
        for NOC in list(sports_by_noc.keys())[1:]:
            sports = sports.intersection(sports_by_noc[NOC])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530248021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.57
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('BA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('MB', 3, 2, 1), ('AF', 3, 2, 1), ('BJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('SM', 3, 2, 1), ('JN', 3, 2, 1), ('KS', 3, 2, 1), ('FZ', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 896, 'const': 1156, 'code+const': 2052}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for y in range(2000,2017,2):
      athletes_by_Year_NOC[str(y)] = {}
      for e in data:
          if str(y) in e:
              player_info = {}
              for i in range(len(data[0])):
                  player_info[data[0][i]] = e[i]
              for each_noc in athletes_by_Year_NOC[str(y)]:
                  if e[7] == each_noc:
                      athletes_by_Year_NOC[str(y)][e[7]].append(player_info)
              if e[7] not in athletes_by_Year_NOC[str(y)]:
                  athletes_by_Year_NOC[str(y)][e[7]] = [player_info]  
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for team in athletes_by_Year_NOC[year]:
        country_medals = [0,0,0]
        for player in athletes_by_Year_NOC[year][team]:
            if player['Medal'] == 'Gold':
                country_medals[0] += 1
            elif player['Medal'] == 'Silver':
                country_medals[1] += 1
            elif player['Medal'] == 'Bronze':
                country_medals[2] += 1
        medals[team] = (country_medals[0], country_medals[1], country_medals[2])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    ranking = sorted(medals.items(), key=lambda x: x[1])[::-1]
    tie = 0
    for e in ranking[5:]:
        if ranking[4][1] == e[1]:
          tie += 1
    for i in range(5+tie):
        topfive.append((ranking[i][0],ranking[i][1][0],ranking[i][1][1],ranking[i][1][2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
        y = str(y)
        if y in d:
            if NOC in d[y]:
                medals = get_medals_by_team(athletes_by_Year_NOC, y)[NOC]
                trend.append((y,medals[0],medals[1],medals[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    all_medals = []
    if year not in athletes_by_Year_NOC:
        return sports
    if NOC not in athletes_by_Year_NOC[year]:
        return sports
    for e in athletes_by_Year_NOC[year][NOC]:
        if e['Medal'] != 'NA':
            all_medals.append(e['Sport'])
    sports = set(all_medals)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    first = True
    if year not in athletes_by_Year_NOC:
        return set()
    for country in NOCs:
        if country in athletes_by_Year_NOC[year]:
            if first:
                sports = get_sports(athletes_by_Year_NOC, country, year)
                first = False
            else:
                sports = sports.intersection(get_sports(athletes_by_Year_NOC, country, year))
        else:
            return set()
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530350221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1172, 'const': 1877, 'code+const': 3049}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC={}
    for n in data:
        Year=n[9];NOC=n[7]
        v = {"ID": n[0],"Name": n[1],"Sex": n[2],"Age": n[3],"Height": n[4],"Weight": n[5],"Team": n[6],"NOC": n[7],"Games": n[8],"Year": n[9],"Season": n[10],"City": n[11],"Sport": n[12],"Event": n[13],"Medal": n[14]}
        if Year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[Year]={NOC: [v]}
        elif NOC not in athletes_by_Year_NOC[Year]:
            athletes_by_Year_NOC[Year][NOC]=[v]
        else:
            athletes_by_Year_NOC[Year][NOC].append(v)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals={}
    for k in athletes_by_Year_NOC[year]:
        if k not in medals:
            medals[k]=(0,0,0)
        for p in athletes_by_Year_NOC[year][k]:
         if p["Medal"]=="Gold":
            medals[k]=(medals[k][0]+1, medals[k][1], medals[k][2])
         elif p["Medal"]=="Silver"   :
            medals[k]=(medals[k][0], medals[k][1]+1, medals[k][2])
         elif p["Medal"]=="Bronze":
            medals[k]=(medals[k][0], medals[k][1], medals[k][2]+1)
    for y in medals:
      medals[y]=tuple(medals[y])
    return medals
#======================================
def get_top_five(medals):
    top_five=[]
    m=find_top_five(medals)
    for x in range(len(m)):
       top_five.append(tuple(m[x][1:]))
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend=[(q, sum(m["Medal"]=="Gold" for m in athletes_by_Year_NOC.get(str(q), {}).get(NOC, [])),
              sum(m["Medal"]=="Silver" for m in athletes_by_Year_NOC.get(str(q), {}).get(NOC, [])),
              sum(m["Medal"]=="Bronze" for m in athletes_by_Year_NOC.get(str(q), {}).get(NOC, []))) for q in range(start, end+1) if str(q) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(q)]]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports=set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for N in athletes_by_Year_NOC[year][NOC]    :
            if N["Medal"]!="NA"   :
                sports.add(N["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    d=None
    for g in NOCs     :
        t=get_sports(athletes_by_Year_NOC, g, year)
        if d is None      :
            d=t
        else     :
            d=d.intersection(t)
    return d                                    
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def find_top_five(h):
    l=[]
    for u, i in h.items()    :
        p=-i[0]*1000-i[1]-i[2]*0.001;l.append([p, u, i[0], i[1], i[2]])
    new=sorted(l)
    k=set(c[0] for c in new)
    p=[c for c in new if c[0] in k][:5]
    return p

6432137221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1228, 'const': 1177, 'code+const': 2405}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  yearlib = {} #year 
  attr = ('ID','Name','Sex','Age','Height','Weight','Team','NOC','Games','Year','Season','City','Sport','Event','Medal')
  for i in range(1,len(data)):
    country_a = {} #country noc
    noc = data[i][7]
    year = data[i][9]
    a_specified = {}
    j = 0
    for keys in attr:
      a_specified[keys] = data[i][j]
      j+=1    
    if(a_specified['Year'] not in yearlib): #new year found -> create new year -> that country
      country_a[noc] = []
      yearlib[a_specified['Year']] = country_a
      yearlib[a_specified['Year']][noc].append(a_specified)
      #print("HI",a_specified['Year'],yearlib)
    else:
      if(noc not in yearlib[year]): #new country found -> create new country in the current year
        yearlib[year][noc] = []
        yearlib[year][noc].append(a_specified)
        #print(noc)
      else: #no new country or year -> directly add data
        yearlib[year][noc].append(a_specified)
        #print(a_specified['Year'],a_specified['NOC'])
  #return athletes_by_Year_NOC
  #print(country_a)
  return yearlib
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  yearlib = athletes_by_Year_NOC
  if(year not in yearlib):
    return medals
  for country in yearlib[year]: #country-> countryNOC
    gold = 0
    silver = 0
    bronze = 0
    for i in range(len(yearlib[year][country])): #i -> indicates the athlete
      medal = yearlib[year][country][i]['Medal']
      if(medal == 'Gold'):
        gold+= 1
      elif(medal == 'Silver'):
        silver+=1
      elif(medal == 'Bronze'):
        bronze+=1
      else:
        continue
    medals[country] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  temp = []
  for country in medals:
    temp.append((medals[country][0],medals[country][1],medals[country][2],country))
  temp = sorted(temp,reverse = True)
  #print("temp",temp)
  i = 0
  re = {}
  while(True):
    if(i > 4):
      if(tuple(temp[i][0:3]) == tuple(temp[i-1][0:3])):
         #topfive.append((temp[i][3],temp[i][0],temp[i][1],temp[i][2]))
         re[(temp[i][0],temp[i][1],temp[i][2])].append(temp[i][3])
      else:
         break
    else:
       #topfive.append((temp[i][3],temp[i][0],temp[i][1],temp[i][2])) #->1st method
       if((temp[i][0],temp[i][1],temp[i][2]) not in re):#->2nd
         re[(temp[i][0],temp[i][1],temp[i][2])] = []
         re[(temp[i][0],temp[i][1],temp[i][2])].append(temp[i][3])
       else:
         re[(temp[i][0],temp[i][1],temp[i][2])].append(temp[i][3])
    i+=1
  ans = []
  for keys in re:
    re[keys] = sorted(re[keys])
    for noc in re[keys]:
      fin = (noc,keys[0],keys[1],keys[2])
      ans.append(fin)
  return ans
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  yearlib = athletes_by_Year_NOC
  for i in range(start,end+1): #i -> represents year
    if(i %2 != 0):
      continue
    #print(NOC)
    if(NOC not in yearlib[str(i)]):
      continue
    #print(i)
    summary = get_medals_by_team(yearlib,str(i))
    #print(summary)
    cntry_summ = summary[NOC]
    #print(i,cntry_summ)
    trend.append((i,cntry_summ[0],cntry_summ[1],cntry_summ[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  yearlib = athletes_by_Year_NOC
  if(year not in yearlib):
    return sports
  if(NOC not in yearlib[year]):
    return sports
  for i in range(len(yearlib[year][NOC])):
    if(yearlib[year][NOC][i]['Medal'] != 'NA'):
      sports.add(yearlib[year][NOC][i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  yearlib = athletes_by_Year_NOC
  data = []
  for e in NOCs:
    data.append(get_sports(yearlib,e,year))
  #print(data)
  #print(sports.intersection({1,2,3,4}))
  sports = data[0]
  for i in range(len(data)):
    sports = sports.intersection(data[i])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
# d = convert_to_dict(data)
# print(len(d['2000']['THA']))
# for i in range(5):
#   print(d['2000']['THA'][i])
# m = get_medals_by_team(d, '3000')
# print(len(m))
# print(m)
# print(get_top_five(m))
# d_mock = convert_to_dict(data_mock)
# m_mock = get_medals_by_team(d_mock, '2010')
# print(get_top_five(m_mock))
# print('USA')
# print(get_medals_trend(d, 'USA', 2001, 2015))
# print('THA')
# print(get_medals_trend(d, 'THA', 2000, 2016))
# print('LIL')
# print(get_medals_trend(d, 'LIL', 2000, 2016))
# print(get_sports(d, 'THA', '2000'))
# print(get_sports(d, 'THA', '2010'))
# print(get_sports(d, 'THA', '2020'))
# print(get_sports(d, 'SOM', '2000'))
# print(get_sports(d, 'THA', '2008'))
# print(get_sports(d, 'VIE', '2008'))
# print(get_sports(d, 'DEN', '2008'))
# print(get_sports(d, 'XXX', '2000'))
# print(get_common_sports(d, {'THA','VIE'}, '2008'))
# print(get_common_sports(d, {'THA','VIE','DEN'}, '2008'))
# print(get_common_sports(d, {'THA','XXX'}, '2008'))

6530384621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 1608, 'const': 1496, 'code+const': 3104}
check_import({'allowable': ['math', 'csv']}) deep: [[('posixpath', 1)]]
from posixpath import join
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    if data[i][9] not in athletes_by_Year_NOC: #ไม่มีปี
      athletes_by_Year_NOC[data[i][9]] = {data[i][7] : [{'ID':data[i][0] , 'Name':data[i][1] , 'Sex': data[i][2], 'Age': data[i][3], 'Height': data[i][4], 'Weight':data[i][5], 'Team': data[i][6], 'NOC': data[i][7], 'Games': data[i][8], 'Year': data[i][9], 'Season': data[i][10], 'City': data[i][11], 'Sport': data[i][12], 'Event': data[i][13], 'Medal': data[i][14]}]}
    else: #มีปี
        if data[i][7] not in athletes_by_Year_NOC[data[i][9]]: #ไม่มีNOC
            athletes_by_Year_NOC[data[i][9]][data[i][7]] = [{'ID':data[i][0] , 'Name':data[i][1] , 'Sex': data[i][2], 'Age': data[i][3], 'Height': data[i][4], 'Weight':data[i][5], 'Team': data[i][6], 'NOC': data[i][7], 'Games': data[i][8], 'Year': data[i][9], 'Season': data[i][10], 'City': data[i][11], 'Sport': data[i][12], 'Event': data[i][13], 'Medal': data[i][14]}]
        else: #มีNOC
            athletes_by_Year_NOC[data[i][9]][data[i][7]] += [{'ID':data[i][0] , 'Name':data[i][1] , 'Sex': data[i][2], 'Age': data[i][3], 'Height': data[i][4], 'Weight':data[i][5], 'Team': data[i][6], 'NOC': data[i][7], 'Games': data[i][8], 'Year': data[i][9], 'Season': data[i][10], 'City': data[i][11], 'Sport': data[i][12], 'Event': data[i][13], 'Medal': data[i][14]}]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  #{'FIN': (3, 1, 1), 'NOR': (20, 4, 19), 'NED': (27, 29, 23), 'EGY': (0, 0, 0), 'ARG': (0, 17, 3), 'CUB': (18, 35, 12), 'CMR': (18, 0, 0), ...
  c1,c2,c3=0,0,0
  medals={}
  for j in athletes_by_Year_NOC[year]:
    for i in range(len(athletes_by_Year_NOC[year][j])):
      if athletes_by_Year_NOC[year][j][i]['Medal']=='Gold':
            c1+=1
      elif athletes_by_Year_NOC[year][j][i]['Medal']=='Silver':
            c2+=1
      elif athletes_by_Year_NOC[year][j][i]['Medal']=='Bronze':
            c3+=1
    medals[j]=(c1,c2,c3)
    c1,c2,c3=0,0,0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  k=[]
  for i in medals:
      k.append([-medals[i][0],-medals[i][1],-medals[i][2],i])
  k.sort()
  for e in range(len(k)):
    if e<=4:
        topfive.append((k[e][3],-k[e][0],-k[e][1],-k[e][2]))
    if e>4:
        if k[e][0]==k[e-1][0] and k[e][1]==k[e-1][1] and k[e][2]==k[e-1][2]:
            topfive.append((k[e][3],-k[e][0],-k[e][1],-k[e][2]))
        else: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2!=0 and end%2!=0:
    start+=1
    end-=1
  for i in range(start,end+2,2):
    medals = get_medals_by_team(athletes_by_Year_NOC, str(i))
    if NOC in medals:
      trend.append((i,medals[NOC][0],medals[NOC][1],medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
      for j in range(len(athletes_by_Year_NOC[year][NOC])):
          if athletes_by_Year_NOC[year][NOC][j]['Medal'] != 'NA':
              sports.add(athletes_by_Year_NOC[year][NOC][j]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_sport=[]
  for i in NOCs:
    if year in athletes_by_Year_NOC and i in athletes_by_Year_NOC[year]:
      m=get_sports(athletes_by_Year_NOC, i, year)
      list_sport.append(m)
  if len(list_sport)!=0:
    for i in range(len(list_sport)-1):
        t=list_sport[i].intersection(list_sport[i+1])
        if len(t)!=0:
          for i in t:
            sports.add(i)
        else:return sports
    return sports
  else: return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
#1

6532097921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.68
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('FA', 3, 2, 1), ('KB', 3, 2, 1), ('JF', 3, 2, 1), ('SJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('BM', 3, 2, 1), ('AN', 3, 2, 1), ('MS', 3, 2, 1), ('NZ', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'struple'>, <class 'str'>]]
get_medals_trend_010.0TypeError('can only concatenate tuple (not "str") to tuple')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 842, 'const': 888, 'code+const': 1730}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  header = data[0]  
  rows = data[1:]   
  result = {}
  for row in rows:
      dic = {}
      for i in range(len(header)):
          dic[header[i]] = row[i]
      year = row[9]  
      NOC = row[7]  
      if year not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[year] = {}
      if NOC not in athletes_by_Year_NOC[year]:
          athletes_by_Year_NOC[year][NOC] = []
      athletes_by_Year_NOC[year][NOC].append(dic)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC in athletes_by_Year_NOC[year]:
        prize_list = athletes_by_Year_NOC[year][NOC]
        gold_count = 0
        silver_count = 0
        bronze_count = 0
        for prize in prize_list:
            if prize["Medal"] == "Gold":
                gold_count += 1
            elif prize["Medal"] == "Silver":
                silver_count += 1
            elif prize["Medal"] == "Bronze":
                bronze_count += 1
        medals[NOC] = (gold_count, silver_count, bronze_count)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    rankByMedal = {}
    for country in medals:
        medalList = medals[country]
        if medalList not in rankByMedal.keys():
            rankByMedal[medalList] = []
        rankByMedal[medalList].append(country)
    ranks = sorted(rankByMedal.keys())
    ranks.reverse()
    for i in range(0, len(ranks)):
        rank = ranks[i]
        if len(topfive) < 5:
            for j in range(0, len(rankByMedal[rank])):
                country = rankByMedal[rank][j]
                medals = (country, rank[0], rank[1], rank[2])
                topfive.append(tuple(medals))
        else:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end + 1):
        if year % 2 == 0:
            medals_by_team = get_medals_by_team(athletes_by_Year_NOC, str(year))
            if NOC in medals_by_team:
                medals = medals_by_team[NOC]
                year_str = str(year)
                medal_1 = medals[0]
                medal_2 = medals[1]
                medal_3 = medals[2]
                trend+=(year_str, medal_1, medal_2, medal_3)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    list1=[]
    if year not in athletes_by_Year_NOC:
        return sports
    if NOC not in athletes_by_Year_NOC[year]:
        return sports
    for sptype in athletes_by_Year_NOC[year][NOC]:
        if sptype['Medal'] != 'NA':
            list1 += [sptype['Sport']]
    sports=set(list1)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sportsN = []
  for i in NOCs:
    sportsN+= [get_sports(athletes_by_Year_NOC,i,year)]
  sports = sportsN[0]
  for j in sportsN[1:]:
    sports = sports.intersection(j)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6430259821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1160, 'const': 1888, 'code+const': 3048}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for row in data:
    year = row[9]
    NOC = row[7]
    info = {'ID': row[0],'Name': row[1],'Sex': row[2],'Age': row[3],'Height': row[4],'Weight': row[5],'Team': row[6],'NOC': row[7],'Games': row[8],'Year': row[9],'Season': row[10],'City': row[11],'Sport': row[12],'Event': row[13],'Medal': row[14]}
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    athletes_by_Year_NOC[year][NOC].append(info)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  year_dict = athletes_by_Year_NOC.get(year, {})
  for noc, athlete_list in year_dict.items():
    medal_counts = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
    for athlete in athlete_list:
      medal = athlete.get('Medal')
      if medal in medal_counts:
        medal_counts[medal] += 1
    medals[noc] = (medal_counts['Gold'], medal_counts['Silver'], medal_counts['Bronze'])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  total_medals = []
  forsort=[]
  n=5
  for noc, medal_counts in medals.items():
    gold, silver, bronze = medal_counts
      #total_medals.append((noc, gold, silver, bronze))
    forsort.append((-gold, -silver, -bronze,noc))
    forsort.sort()
  for i in range(len(forsort)):
    k=(forsort[i][3], -forsort[i][0], -forsort[i][1], -forsort[i][2])
    total_medals.append(k)
  for i in range(5,len(forsort)):
    if -forsort[4][0]==-forsort[i][0] and -forsort[4][1] == -forsort[i][1] and -forsort[4][2] == -forsort[i][2]:
      n+=1
  if -forsort[4][0]!=-forsort[5][0] and -forsort[4][1] != -forsort[5][1] and -forsort[4][2] != -forsort[5][2]:
    n=5
  topfive=total_medals[:n]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    if str(year) not in athletes_by_Year_NOC:
      continue
    if NOC not in athletes_by_Year_NOC[str(year)]:
      continue
    medals = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
    for athlete in athletes_by_Year_NOC[str(year)][NOC]:
      if athlete['Medal'] == 'Gold':
        medals['Gold'] += 1
      elif athlete['Medal'] == 'Silver':
        medals['Silver'] += 1
      elif athlete['Medal'] == 'Bronze':
        medals['Bronze'] += 1
    trend.append((str(year), medals['Gold'], medals['Silver'], medals['Bronze']))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  athletes = athletes_by_Year_NOC[year].get(NOC, [])
  for athlete in athletes:
    if athlete['Medal'] != 'NA':
      sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports_sets = []
  for NOC in NOCs:
    sport = set()
    if year in athletes_by_Year_NOC:
      for athlete in athletes_by_Year_NOC[year].get(NOC, []):
        if athlete['Medal'] != 'NA':
          sport.add(athlete['Sport'])
    sports_sets.append(sport) 
  sports=set(sports_sets[0])    
  for i in range(1,len(sports_sets)):
    sports=sports& sports_sets[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530316021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0NameError("name 'data' is not defined")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1004, 'const': 900, 'code+const': 1904}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(len(data)):
        year = data[i][9]
        NOC = data[i][7]
        nocx = {}
        for j,x in enumerate(data[0]):
            nocx[x] = data[i][j]
        if year not in athletes_by_Year_NOC : athletes_by_Year_NOC[year] = {}
        if NOC not in athletes_by_Year_NOC[year] : athletes_by_Year_NOC[year][NOC] = []
        athletes_by_Year_NOC[year][NOC].append(nocx)    
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    d = athletes_by_Year_NOC
    if str(year) in d:
        NOC = list(d[year].keys())
        for e in NOC:
            gold,silver,bronze = 0,0,0
            for i in range(len(d[year][e])):
                if d[year][e][i]['Medal'] == 'Gold': gold += 1
                if d[year][e][i]['Medal'] == 'Silver': silver += 1
                if d[year][e][i]['Medal'] == 'Bronze': bronze += 1
            medals[e] = (gold,silver,bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medals1 = []
    d = convert_to_dict(data)
    m_mock = medals
    for k,v in m_mock.items():
        medals1.append(v+(k,))
    medals1.sort(reverse=True)
    test = set()
    for i in range(5):
        test.add(medals1[i][:3])
    if len(test)==5:
        for i in range(5):
            topfive.append((medals1[i][3],)+medals1[i][:3])
    else:
        c = 0
        for i in range(5,len(medals1)):
            if medals1[4][:3] != medals1[i][:3] : break
            c += 1
        for i in range(5+c) : topfive.append((medals1[i][3],)+medals1[i][:3])
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    d = athletes_by_Year_NOC
    for year in range(start,end+1):
        if str(year) in d and NOC in d[str(year)]:
            di = get_medals_by_team(d, str(year))
            trend.append((str(year),) + di[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    d = athletes_by_Year_NOC
    if str(year) in d and NOC in d[str(year)]:
        for i in range(len(d[year][NOC])):
            if not d[year][NOC][i]['Medal'] == 'NA':
                sports.add(d[year][NOC][i]['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    d = athletes_by_Year_NOC
    NOCs = list(NOCs)
    liss = [get_sports(d, e, year) for e in NOCs]
    sports = set.intersection(*liss)    
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530371421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0UnboundLocalError("local variable 'b' referenced before assignment")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1112, 'const': 1064, 'code+const': 2176}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  result = {}
  for datas in data:
    year = datas[9]
    noc = datas[7]
    if year not in result:
      result[year] = {}
    if noc not in result[year]:
      result[year][noc] = []
    athlete = {}
    for i in range(len(data[0])):
      athlete[data[0][i]] = datas[i]
    result[year][noc].append(athlete)
  return result
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC_list in athletes_by_Year_NOC[year]:
    for real in athletes_by_Year_NOC[year][NOC_list]:
      if NOC_list not in medals:
        medals[NOC_list] = (0, 0, 0)
      if real['Medal'] == 'Gold':
        medals[NOC_list] = (medals[NOC_list][0] + 1, medals[NOC_list][1], medals[NOC_list][2]) 
      elif real['Medal'] == 'Silver':
        medals[NOC_list] = (medals[NOC_list][0], medals[NOC_list][1] + 1, medals[NOC_list][2]) 
      elif real['Medal'] == 'Bronze':
        medals[NOC_list] = (medals[NOC_list][0], medals[NOC_list][1], medals[NOC_list][2] + 1) 
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  topfives = []
  list_medals = []
  for c in medals:
    if c not in topfive:
      list_medals.append((medals[c][0],medals[c][1],medals[c][2],c))
  x = sorted(list_medals)
  start = x[-1][0:3]
  topfives.append(x[-1])
  c = 4
  for e in x[-2::-1]:
    if len(topfives) >= 5 and e[0:3] == start:
      topfives.insert(b,e)
      start = e[0:3]
      c = 1
    if c == 0: break
    if e[0:3] == start and len(topfives) < 5:
      topfives.insert(b,e)
      start = e[0:3]
      c -= 1
    elif len(topfives) < 5:
      topfives.append(e)
      start = e[0:3]
      c -= 1
    if e not in topfives:break 
    b = topfives.index(e)
  for e in topfives:
    topfive.append((e[3],e[0],e[1],e[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2 != 0:
    start += 1
  if end%2 == 0:
    end += 1
  for i in range(start,end,2):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        x = get_medals_by_team(athletes_by_Year_NOC, str(i))
        trend.append((str(i),x[NOC][0],x[NOC][1],x[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
    return sports
  for c in athletes_by_Year_NOC[year][NOC]:
    if c['Medal']!='NA':
      sports.add(c['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  allsport = []
  for NOC in NOCs:
    allsport.append(get_sports(athletes_by_Year_NOC,NOC,year))
  sports = allsport[0]
  for i in range(1,len(allsport)):
    sports = sports.intersection(allsport[i])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530394921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1004, 'const': 2048, 'code+const': 3052}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for athlete in data :
    if athlete[9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[athlete[9]] = {}
    if athlete[7] not in athletes_by_Year_NOC[athlete[9]]:
       athletes_by_Year_NOC[athlete[9]][athlete[7]] = []
    eachAtletes = {}
    eachAtletes["ID"] = athlete[0]
    eachAtletes["Name"] = athlete[1]
    eachAtletes["Sex"] = athlete[2]
    eachAtletes["Age"] = athlete[3]
    eachAtletes["Height"] = athlete[4]
    eachAtletes["Weight"] = athlete[5]
    eachAtletes["Team"] = athlete[6]
    eachAtletes["NOC"] = athlete[7]
    eachAtletes["Games"] = athlete[8]
    eachAtletes["Year"] = athlete[9]
    eachAtletes["Season"] = athlete[10]
    eachAtletes["City"] = athlete[11]
    eachAtletes["Sport"] = athlete[12]
    eachAtletes["Event"] = athlete[13]
    eachAtletes["Medal"] = athlete[14]
    athletes_by_Year_NOC[athlete[9]][athlete[7]].append(eachAtletes)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for eachNOC in athletes_by_Year_NOC[str(year)] :
    gold = 0;silver = 0;bronze = 0
    for athlete in athletes_by_Year_NOC[str(year)][eachNOC] :
        if athlete["Medal"] == "Gold":
            gold += 1
        elif athlete["Medal"] == "Silver":
           silver += 1
        elif athlete["Medal"] == "Bronze" :
           bronze += 1
    medals[athlete["NOC"]] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  dataForSort = []
  for NOC in medals:
      dataForSort.append([-medals[NOC][0],-medals[NOC][1],-medals[NOC][2],NOC])
      dataForSort.sort()
  topfive.append((dataForSort[0][3],-dataForSort[0][0],-dataForSort[0][1],-dataForSort[0][2]))
  for i in range(1,len(dataForSort)):
      if i < 5 or dataForSort[i][0:3] == dataForSort[i-1][0:3] :
          topfive.append((dataForSort[i][3],-dataForSort[i][0],-dataForSort[i][1],-dataForSort[i][2]))
      else:break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
      if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]  :
        trend.append(((i,1)[0:1]+get_medals_by_team(athletes_by_Year_NOC,i)[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
          for athlete in athletes_by_Year_NOC[year][NOC]:
              if athlete["Medal"] != "NA":
                  sports.add(athlete["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  eachNOC = []
  for i in NOCs:
      eachNOC.append(get_sports(athletes_by_Year_NOC,i,year))
  sports.update(eachNOC[0])
  for i in eachNOC[1:]:
      sports = sports.intersection(i)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530421121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1278, 'const': 2429, 'code+const': 3707}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for pList in data:
    if pList[9] not in athletes_by_Year_NOC:
      l = list()
      l.append(change_list_to_dict(pList))
      athletes_by_Year_NOC[pList[9]] = {pList[7]:l}
    elif pList[9] in athletes_by_Year_NOC:
      if pList[7] not in athletes_by_Year_NOC[pList[9]]:
        l = list()
        l.append(change_list_to_dict(pList))
        athletes_by_Year_NOC[pList[9]][pList[7]] = l
      elif pList[7] in athletes_by_Year_NOC[pList[9]]:
        d = change_list_to_dict(pList)
        athletes_by_Year_NOC[pList[9]][pList[7]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC : return medals
  for noc in athletes_by_Year_NOC[year]:
    gold = 0
    silver = 0
    bronze = 0
    for e in athletes_by_Year_NOC[year][noc]:
      if e['Medal'] == "Gold":
        gold += 1
      elif e['Medal'] == 'Silver':
        silver += 1
      elif e['Medal'] == 'Bronze':
        bronze += 1
    medals[noc] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sortList = []
  for noc in medals:
    t = medals[noc]
    gold = -t[0]
    silver = -t[1]
    bronze = -t[2]
    t2 = (gold,silver,bronze,noc)
    sortList.append(t2)
  sortList.sort()
  stop = 4
  next = 5
  while True:
    c1 = sortList[stop]
    c2 = sortList[next]
    if c1[0] == c2[0] and c1[1] == c2[1] and c1[2] == c2[2]:
      stop = next
      next+=1
    else:
      break
  topfive = sortList[:stop+1]
  for i in range(0,len(topfive)):
    temp = topfive[i]
    temp2 = (temp[3],-temp[0],-temp[1],-temp[2])
    topfive[i] = temp2
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    year = str(i)
    if year not in athletes_by_Year_NOC: continue
    if NOC not in athletes_by_Year_NOC[year]:continue
    ll = athletes_by_Year_NOC[year][NOC]
    gold = 0
    silver = 0
    bronze = 0
    for e in ll:
      if e['Medal'] == "Gold":
        gold += 1
      elif e['Medal'] == 'Silver':
        silver += 1
      elif e['Medal'] == 'Bronze':
        bronze += 1
    t = (year,gold,silver,bronze)
    trend.append(t)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC: return sports
  if NOC not in athletes_by_Year_NOC[year]: return sports
  ll = athletes_by_Year_NOC[year][NOC]
  for e in ll:
    if e['Medal'] == 'Gold' or e['Medal'] == 'Silver' or e['Medal'] == 'Bronze':
      sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  countMedal = {}
  for noc in NOCs:
    temp = set()
    temp = get_sports(athletes_by_Year_NOC, noc, year)
    for e in temp:
      if e in countMedal:
        countMedal[e] += 1
      else:
        countMedal[e] = 1
  for sport in countMedal:
    if countMedal[sport] == len(NOCs):
      sports.add(sport)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def change_list_to_dict(pList):
    personal_dict = {}
    personal_dict['ID'] = pList[0]
    personal_dict['Name'] = pList[1]
    personal_dict['Sex'] = pList[2]
    personal_dict['Age'] = pList[3]
    personal_dict['Height'] = pList[4]
    personal_dict['Weight'] = pList[5]
    personal_dict['Team'] = pList[6]
    personal_dict['NOC'] = pList[7]
    personal_dict['Games'] = pList[8]
    personal_dict['Year'] = pList[9]
    personal_dict['Season'] = pList[10]
    personal_dict['City'] = pList[11]
    personal_dict['Sport'] = pList[12]
    personal_dict['Event'] = pList[13]
    personal_dict['Medal'] = pList[14]
    return personal_dict

6530429221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0UnboundLocalError("local variable 'j' referenced before assignment")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1018, 'const': 1028, 'code+const': 2046}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data:
    y = i[9]
    if y not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[y] = {}
    noc = i[7]
    if noc not in athletes_by_Year_NOC[y]:
      athletes_by_Year_NOC[y][noc] = []
    p = {}
    for j in range(len(data[0])):
      p[data[0][j]] = i[j]
    athletes_by_Year_NOC[y][noc].append(p)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {}
  for i in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for j in athletes_by_Year_NOC[year][i]:
      if j['Medal'] == 'Gold':
        g += 1
      elif j['Medal'] == 'Silver':
        s += 1
      elif j['Medal'] == 'Bronze':
        b += 1
    medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  allm = []
  if medals == {}:
    return []
  for i in medals:
    allm.append([-(medals[i][0]),-(medals[i][1]),-(medals[i][2]),i])
  allm.sort()
  if len(allm) >= 6:
    for j in range(5):
      topfive.append((allm[j][3],-allm[j][0],-allm[j][1],-allm[j][2]))
    for i in allm[5:]:
      if i[:3] == allm[4][:3]:
        topfive.append((i[3],-i[0],-i[1],-i[2]))
      else:
        break
  elif len(allm) <= 5:
    for i in range(len(allm)):
      topfive.append((allm[j][3],-allm[j][0],-allm[j][1],-allm[j][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start % 2 != 0:
    start +=1
  if end % 2 !=0:
    end -= 1
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      m = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in m:
        ans = m[NOC]
        trend.append((str(i),ans[0],ans[1],ans[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]:
        if i['Medal'] == 'Gold' or i['Medal'] == 'Silver' or i['Medal'] == 'Bronze':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  l = []
  for i in NOCs:
    l.append(get_sports(athletes_by_Year_NOC,i,year))
  sports = l[0]
  for j in range(len(l)):
    sports = sports.intersection(l[j])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532051021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1062, 'const': 1750, 'code+const': 2812}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  col_name = data[0]
  for athlete in data:
    year = athlete[9]
    noc = athlete[7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    athlete_dict = {}
    for i in range(len(athlete)):
      athlete_dict[col_name[i]] = athlete[i]
    athletes_by_Year_NOC[year][noc].append(athlete_dict)  
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  noc_this_year = list(athletes_by_Year_NOC[year].keys())
  for noc in noc_this_year:
    this_noc_medal = [0,0,0]
    for athlete in athletes_by_Year_NOC[year][noc]:
      if athlete['Medal'] == 'Bronze':
        this_noc_medal[2] += 1
      elif athlete['Medal'] == 'Silver':
        this_noc_medal[1] += 1
      elif athlete['Medal'] == 'Gold':
        this_noc_medal[0] += 1
    medals[noc] = tuple(this_noc_medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sorted_alphabet_medal = sorted(medals.items(), key=lambda x:x[0])
  sorted_bronze_medal = sorted(sorted_alphabet_medal, key=lambda x:x[1][2], reverse = True)
  sorted_silver_medal = sorted(sorted_bronze_medal, key=lambda x:x[1][1], reverse = True)
  sorted_gold_medal = sorted(sorted_silver_medal, key=lambda x:x[1][0], reverse = True)
  top = 0
  previous_medal = ()
  for i in range(5):
    country = sorted_gold_medal[i][0]
    medal = sorted_gold_medal[i][1]
    topfive.append((country, medal[0], medal[1], medal[2]))
    if i == 4:
      previous_medal = medal
  i+=1
  while True:
    country = sorted_gold_medal[i][0]
    medal = sorted_gold_medal[i][1]
    if medal == previous_medal:
      topfive.append((country, medal[0], medal[1], medal[2]))
      i += 1
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year_int in range(start,end+1):
    year = str(year_int)
    gold = 0
    silver = 0
    bronze = 0
    if year in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[year].keys():
        for athlete in athletes_by_Year_NOC[year][NOC]:
          if athlete['Medal'] == 'Bronze':
            bronze += 1
          elif athlete['Medal'] == 'Silver':
            silver += 1
          elif athlete['Medal'] == 'Gold':
            gold += 1
        trend.append((year, gold, silver, bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC.keys():
    if NOC in athletes_by_Year_NOC[year].keys():
      for athlete in athletes_by_Year_NOC[year][NOC]:
        if athlete['Medal'] in ['Bronze', 'Silver', 'Gold']:
          sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sport_list = []
  for noc in NOCs:
    sport = set()
    if year in athletes_by_Year_NOC.keys():
      if noc in athletes_by_Year_NOC[year].keys():
        for athlete in athletes_by_Year_NOC[year][noc]:
          if athlete['Medal'] in ['Bronze', 'Silver', 'Gold']:
            sport.add(athlete['Sport'])
    sport_list.append(sport)
  sports = sport_list[0]
  for i in range(1, len(NOCs)):
    sports = sports.intersection(sport_list[i])  
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431513321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0KeyError('2004')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0KeyError('2004')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 928, 'const': 1094, 'code+const': 2022}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    Listdict = [{data[0][j]: data[i][j] for j in range(len(data[0]))} for i in range(1, len(data))]
    NOCs = {L['NOC'] for L in Listdict}
    Years = {L['Year'] for L in Listdict}
    athletes_by_Year_NOC = {}
    for y in Years:
        Y = {n: [L for L in Listdict if L['Year'] == y and L['NOC'] == n] for n in NOCs}
        athletes_by_Year_NOC[y] = Y
    return athletes_by_Year_NOC
#------------------------------------------------------------------------------------------------------#
def get_medals_by_team(athletes_by_Year_NOC, year):
    Check = athletes_by_Year_NOC[year]
    medals = {NOC: (sum(person['Medal'] == 'Gold' for person in Check[NOC]), 
                    sum(person['Medal'] == 'Silver' for person in Check[NOC]), 
                    sum(person['Medal'] == 'Bronze' for person in Check[NOC]))
              for NOC in Check}
    return medals
#------------------------------------------------------------------------------------------------------#
def get_top_five(medals):
  topfive = []
  l = []
  for noc in medals:
    t = medals[noc]
    l.append((-t[0],-t[1],-t[2],noc))
  for new_t in sorted(l)[:5]:
    topfive.append((new_t[3],-new_t[0],-new_t[1],-new_t[2]))
  return topfive
#------------------------------------------------------------------------------------------------------#
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  medals_by_team = {}
  for year in range(start, end+1):
    medals_by_team.update(get_medals_by_team(athletes_by_Year_NOC, str(year)))
  for year in range(start, end+1):
    if NOC in medals_by_team[str(year)]:
      new_t = (str(year),) + medals_by_team[str(year)][NOC]
      trend.append(new_t)
  return trend
#------------------------------------------------------------------------------------------------------#
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for d in athletes_by_Year_NOC[year][NOC]:
            if d['Medal'] != 'NA':
                sports.add(d['Sport'])
    return sports
#------------------------------------------------------------------------------------------------------#
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  list_of_sports = [get_sports(athletes_by_Year_NOC, noc, year) for noc in NOCs]
  return set.intersection(*list_of_sports)
#------------------------------------------------------------------------------------------------------#
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530240921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 922, 'const': 948, 'code+const': 1870}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    d = {}
    a = {}
    for i in range(1,len(data)) :
        y = data[i][9]
        if y not in d :
            d[y] = {}
        if data[i][7] not in d[y] :
            d[y][data[i][7]] = []
        n = {}
        for e in range(15) :
            n[data[0][e]] = data[i][e]
        d[y][data[i][7]].append(n)
    return d
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
#  me = {} # <-- IndentationError
    me = {}
    if year in athletes_by_Year_NOC :      
        for NOC in athletes_by_Year_NOC[year] :
            if NOC not in me :
                me[NOC] = [0]*3
                #[g,s,b]
            for r in range(len(athletes_by_Year_NOC[year][NOC])) :
                if athletes_by_Year_NOC[year][NOC][r]['Medal'] == 'Gold' :
                    me[NOC][0] += 1
                elif athletes_by_Year_NOC[year][NOC][r]['Medal'] == 'Silver' :
                    me[NOC][1] += 1
                elif athletes_by_Year_NOC[year][NOC][r]['Medal'] == 'Bronze' :
                    me[NOC][2] += 1
            me[NOC] = tuple(me[NOC])
    return me
#======================================
def get_top_five(medals):
#  top = [] # <-- IndentationError
    top = []
    hell = []
    i = 0
    for e in medals :
        a,b,c = medals[e]
        hell.append([-a,-b,-c,e])
    hell.sort()
    for e in range(len(hell)) :
        if i < 5 :
            top.append((hell[e][3],-hell[e][0],-hell[e][1],-hell[e][2]))
            i += 1
        elif i > 5 and hell[e][0] == hell[e-1][0] :
            top.append((hell[e][3],-hell[e][0],-hell[e][1],-hell[e][2]))
    return top
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
#  trend = [] # <-- IndentationError
    trend = []
    for i in range(start,end+1) :
        if str(i) in athletes_by_Year_NOC :
            for e in get_medals_by_team(athletes_by_Year_NOC, str(i)) :
                if e == NOC :
                    r = get_medals_by_team(athletes_by_Year_NOC, str(i))[e]
                    trend.append((str(i),r[0],r[1],r[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
#  s = set() # <-- IndenttionError
    s = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            x = athletes_by_Year_NOC[year][NOC]
            for e in x :
                if e['Medal'] != 'NA' :
                    s.add(e['Sport'])
                else :
                    pass
    return s
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530433721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.61
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('XJ', 3, 2, 1), ('K', 3, 2, 01),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.25KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 720, 'const': 948, 'code+const': 1668}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for r in data[1:]:
        Year = r[9]
        NOC = r[7]
        c = data[0]
        if Year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[Year] = {}
        if NOC not in athletes_by_Year_NOC[Year]:
            athletes_by_Year_NOC[Year][NOC] = []
        inf = {}
        for i in range(len(c)):
           inf[c[i]] = r[i]
        athletes_by_Year_NOC[Year][NOC].append(inf)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, Year):
    medals = {}
    for NOC in athletes_by_Year_NOC[Year]:
        g,s,b = 0,0,0
        for inf in athletes_by_Year_NOC[Year][NOC]:
            if(inf['Medal']=='Gold'):
                g+=1
            elif(inf['Medal']=='Silver'):
                s+=1
            elif(inf['Medal']=='Bronze'):
                b+=1
        medals[NOC] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    n={}
    for NOC in medals:
        x = medals[NOC]
        if x not in n:
            n[x]=[NOC]
    for y in sorted(n.keys(),reverse=True):
        if len(topfive)==5:
            break
        for NOC in sorted(n[y]):
            topfive.append((NOC,y[0],y[1],y[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end):
        if(i%2 != 0):
            continue
        n = get_medals_by_team(athletes_by_Year_NOC, str(i))
        if NOC not in n:
            continue
        g,s,b = n[NOC]
        trend.append((str(i),g,s,b))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, Year):
    sports = set()
    if Year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[Year]:
        for inf in athletes_by_Year_NOC[Year][NOC]:
            if(inf['Medal'] != 'NA'):
                sports.add(inf['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, Year):
    sports = set()
    for NOC in NOCs:
        sports |= get_sports(athletes_by_Year_NOC, NOC, Year)
    if len(sports) == 0:
        return sports
    for NOC in NOCs:
        sports &= get_sports(athletes_by_Year_NOC, NOC, Year)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6331010921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 1966, 'const': 1292, 'code+const': 3258}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(len(data)-1):
      df = {}
      for e in range(len(data[i+1])):
          df[data[0][e]] = data[i+1][e]
      if data[i+1][9] not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[data[i+1][9]] = {data[i+1][7] : [df] }
      elif data[i+1][7] not in athletes_by_Year_NOC[data[i+1][9]]:
          b = athletes_by_Year_NOC[data[i+1][9]]
          b[data[i+1][7]] = [df]
          athletes_by_Year_NOC[data[i+1][9]] = b
      else:
          a = athletes_by_Year_NOC[data[i+1][9]][data[i+1][7]]
          a.append(df)
          #athletes_by_Year_NOC[data[i+1][9]] = {data[i+1][7] : a }
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  a = athletes_by_Year_NOC[year]
  for k in a:
      bronze = 0
      silver = 0
      gold = 0
      for i in range(len(a[k])):
          b = a[k][i]['Medal']
          if b == 'Bronze':
              bronze += 1
          elif b == 'Silver':
              silver += 1
          elif b == 'Gold':
              gold += 1
          else:
              pass
      medals[k] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a = []
  for k in medals:
      a.append((medals[k][0],medals[k][1],medals[k][2],k))
  a.sort()
  num = 0
  pos = -1
  while num < 5:
      if pos == -1:
          topfive.append((a[pos][3],a[pos][0],a[pos][1],a[pos][2]))
          num += 1
          pos -= 1
      elif (a[pos][0],a[pos][1],a[pos][2]) == (a[pos+1][0],a[pos+1][1],a[pos+1][2]):
          if a[pos][3] < a[pos+1][3]:
              p = topfive.index((a[pos+1][3],a[pos+1][0],a[pos+1][1],a[pos+1][2]))
              topfive.insert(p,(a[pos][3],a[pos][0],a[pos][1],a[pos][2]))
          else:
              topfive.append((a[pos][3],a[pos][0],a[pos][1],a[pos][2]))
          pos -= 1
          num += 1
      else:
          topfive.append((a[pos][3],a[pos][0],a[pos][1],a[pos][2]))
          num += 1
          pos -= 1
  while (a[pos][0],a[pos][1],a[pos][2]) == (a[pos+1][0],a[pos+1][1],a[pos+1][2]):
      if a[pos][3] < a[pos+1][3]:
          p = topfive.index((a[pos+1][3],a[pos+1][0],a[pos+1][1],a[pos+1][2]))
          topfive.insert(p,(a[pos][3],a[pos][0],a[pos][1],a[pos][2]))
      else:
          topfive.append((a[pos][3],a[pos][0],a[pos][1],a[pos][2]))
      pos -= 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  a = []
  for i in range(start,end+1,1):
      if str(i) not in athletes_by_Year_NOC:
          pass
      else:
          a.append(i)
  for e in range(len(a)):
      year = a[e]
      if NOC in athletes_by_Year_NOC[str(year)]:
          b = athletes_by_Year_NOC[str(year)][NOC]
          bronze = 0
          silver = 0
          gold = 0
          for g in range(len(b)):
              bb = b[g]['Medal']
              if bb == 'Bronze':
                  bronze += 1
              elif bb == 'Silver':
                  silver += 1
              elif bb == 'Gold':
                  gold += 1
              else:
                  pass
          trend.append((str(year),gold,silver,bronze))
      else:
          pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
      pass
  elif NOC in athletes_by_Year_NOC[year]:
      a = athletes_by_Year_NOC[year][NOC]
      for i in range(len(a)):
          if a[i]['Medal'] == 'NA':
              pass
          else:
              sports.add(a[i]['Sport'])
  else:
      pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  b = {}
  data = []
  for i in NOCs:
      d = set()
      if year not in athletes_by_Year_NOC:
          pass
      elif i in athletes_by_Year_NOC[year]:
          a = athletes_by_Year_NOC[year][i]
          for e in range(len(a)):
              if a[e]['Medal'] == 'NA':
                  pass
              else:
                  d.add(a[e]['Sport'])
      b[i] = d
  for g in b:
      data.append(b[g])
  c = 0
  while c+1 != len(data):
      sports = data[c] & data[c+1]
      c += 1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6432177321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1052, 'const': 1048, 'code+const': 2100}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    tempColumn = []
    for IndexRow in range(len(data)):
        if IndexRow == 0:
            tempColumn = data[IndexRow]
            continue
        row = data[IndexRow]
        if not athletes_by_Year_NOC.get(row[9]):
            athletes_by_Year_NOC[row[9]] = {}
        if not athletes_by_Year_NOC.get(row[9]).get(row[7]):
            athletes_by_Year_NOC[row[9]][row[7]] = []
        tempDict = {}
        for IndexColumn in range(len(tempColumn)):
            tempDict[tempColumn[IndexColumn]]= row[IndexColumn]
        athletes_by_Year_NOC[row[9]][row[7]].append(tempDict)
    return athletes_by_Year_NOC
# ======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    keyNOC = list(athletes_by_Year_NOC[year])
    for indexKey in range(len(keyNOC)):
        DataEachYearByNOC = athletes_by_Year_NOC[year][keyNOC[indexKey]]
        roundEachNOC = len(DataEachYearByNOC)
        gold = 0
        silver = 0
        bronze = 0
        for indexRENOC in range(roundEachNOC):
            MedalData = DataEachYearByNOC[indexRENOC]["Medal"]
            if MedalData == "Gold":
                gold += 1
            elif MedalData == "Silver":
                silver += 1
            elif MedalData == "Bronze":
                bronze += 1
        medals[keyNOC[indexKey]] = (gold,silver,bronze)
    return medals
# ======================================
def get_top_five(medals):
    topfive = []
    lst = list(medals)
    templst = []
    for key in lst:
        data = medals[key]
        templst.append((key,data[0],data[1],data[2]))
    templst = sorted(
        templst
    )
    sorted_list = sorted(
        templst,
        key=lambda t: (t[1], t[2], t[3]),
        reverse=True,
    )
    ref = 0
    while True:
        topfive.append(sorted_list[ref])
        ref += 1
        if ref >= 4:
            if (sorted_list[ref][1] == sorted_list[ref+1][1]) and (sorted_list[ref][2] == sorted_list[ref+1][2]) and (sorted_list[ref][3] == sorted_list[ref+1][3]):
                topfive.append(sorted_list[ref])
                ref += 1
            else:
                topfive.append(sorted_list[ref])
                break
    return topfive
# ======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for each_year in range(start,end+1):
        if athletes_by_Year_NOC.get(f'{each_year}') and athletes_by_Year_NOC.get(f'{each_year}').get(NOC):
            m = get_medals_by_team(athletes_by_Year_NOC, f'{each_year}')
            trend.append((each_year,m[NOC][0],m[NOC][1],m[NOC][2]))
    return trend
# ======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if athletes_by_Year_NOC.get(year) and athletes_by_Year_NOC.get(year).get(NOC):
        for i in range(len(athletes_by_Year_NOC[year][NOC])):
            if athletes_by_Year_NOC[year][NOC][i]["Medal"] != "NA":
                sports.add(athletes_by_Year_NOC[year][NOC][i]["Sport"])
    return sports
# ======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    cleanLst = list(NOCs)
    tempDict = {}
    for NOC in cleanLst:
        sportList = list(get_sports(athletes_by_Year_NOC, NOC, year))
        for sport in sportList:
            if not tempDict.get(sport):
                tempDict[sport] = 1
            else:
                tempDict[sport] += 1
    for key in tempDict:
        if tempDict[key] == len(NOCs):
            sports.add(key)
    return sports
# ======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530265621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0KeyError('2000')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 930, 'const': 997, 'code+const': 1927}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        athdict = {}
        for j in range(15):
            athdict[data[0][j]] = data[i][j]
        data[i] = athdict
    for i in range(1,len(data)):
        if data[i]['Year'] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i]['Year']] = {data[i]['NOC']:[data[i]]}
        elif data[i]['NOC'] not in athletes_by_Year_NOC[data[i]['Year']]:
            athletes_by_Year_NOC[data[i]['Year']][data[i]['NOC']] = [data[i]]
        else:
            athletes_by_Year_NOC[data[i]['Year']][data[i]['NOC']].append(data[i])
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    League_log = athletes_by_Year_NOC[year]
    Nations = League_log.keys()
    for i in Nations:
        Team_members = League_log[i]
        Au = 0
        Ag = 0
        CuSn = 0
        for j in range(len(Team_members)):
            if Team_members[j]['Medal'] == 'Gold': Au += 1
            elif Team_members[j]['Medal'] == 'Silver': Ag += 1
            elif Team_members[j]['Medal'] == 'Bronze': CuSn += 1
        medals[i] = (Au,Ag,CuSn)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    rank = []
    for P in medals:
        G,S,B = medals[P]
        rank.append([-G,-S,-B,P])
    rank.sort()
    topfive = [(P,-G,-S,-B) for G,S,B,P in rank[0:5]]
    for G,S,B,P in rank[5:]:
        if rank[4][:3] == [G,S,B]:
            topfive.append((P,-G,-S,-B))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    m = {}
    year_log = ['2000','2002','2004','2006','2008','2010','2012','2014','2016']
    for year in year_log:
        m = get_medals_by_team(athletes_by_Year_NOC, year)
        if int(year) >= start and int(year) <= end and NOC in m:
            trend.append((year,)+m[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            sport_beat = athletes_by_Year_NOC[year][NOC]
            for x in range(len(sport_beat)):
                if sport_beat[x]['Medal'] != 'NA':
                    sports.add(sport_beat[x]['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    loop = 0
    for NOC in NOCs:
        Nation_exp = get_sports(athletes_by_Year_NOC, NOC, year)
        if loop == 0:
            sports = Nation_exp
            loop += 1
        else:
            sports = sports & Nation_exp
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530270721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 998, 'const': 1021, 'code+const': 2019}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  years = set()
  all_ath = []
  for i in range(1,len(data)):
    each_ath = {}
    for j in range(len(data[0])):
      each_ath.update({data[0][j]:data[i][j]})
    all_ath.append(each_ath)
  for k in all_ath:
    years.add(k['Year'])
  for y in years:
    nation_ath = {}
    for n in all_ath:
      if y == n['Year']:
        nation_ath[n['NOC']] = nation_ath.get(n['NOC'],[]) + [n]
    athletes_by_Year_NOC[y] = nation_ath
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  all_nation = athletes_by_Year_NOC[year]
  for n in all_nation:
    medal_list = [0,0,0]
    ath_ls = all_nation[n]
    for ath in ath_ls:
      if ath['Medal'] == 'Gold': medal_list[0] += 1
      elif ath['Medal'] == 'Silver': medal_list[1] += 1
      elif ath['Medal'] == 'Bronze': medal_list[2] += 1
    medals.update({n:tuple(medal_list)})
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all_medals = []
  for i in medals:
    noc_medals = []
    noc_medals.append(medals[i])
    noc_medals.append(i)
    all_medals.append(noc_medals)
  all_medals.sort()
  for j in range(len(medals)):
    tf = (all_medals[-1-j][-1],) + all_medals[-1-j][0]
    topfive.append(tf)
    if j >= 4 and all_medals[-1-j][0] != all_medals[-2-j][0]:
      break
  for n in range(len(topfive) - 1):
    for k in range(len(topfive) - 1):
      if topfive[k][1::] == topfive[k+1][1::] and topfive[k][0] > topfive[k+1][0]:
        topfive[k],topfive[k+1] = topfive[k+1],topfive[k]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  medals = ()
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      m = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in m:
        medals = tuple([str(i)]) + m[NOC]
        trend.append(medals)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    all_ath = athletes_by_Year_NOC[year][NOC]
    for ath in all_ath:
      if ath['Medal'] != 'NA':
        sports.add(ath['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports_ls = []
  for i in NOCs:
    sports_ls.append(get_sports(athletes_by_Year_NOC, i, year))
  for j in range(len(sports_ls)-1):
    sports = sports_ls[j].intersection(sports_ls[j+1])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530271321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1886, 'const': 1504, 'code+const': 3390}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    x={}
    for i in range(1,len(data)):
        if data[i][9] in x:
            if data[i][7] in x[data[i][9]]:
                x[data[i][9]][data[i][7]].append({"ID":data[i][0],"Name":data[i][1],"Sex":data[i][2],"Age":data[i][3],"Height":data[i][4],"Weight":data[i][5],"Team":data[i][6],"NOC":data[i][7],"Games":data[i][8],"Year":data[i][9],"Season":data[i][10],"City":data[i][11],"Sport":data[i][12],"Event":data[i][13],"Medal":data[i][14]})
            else:
                x[data[i][9]][data[i][7]]=[{"ID":data[i][0],"Name":data[i][1],"Sex":data[i][2],"Age":data[i][3],"Height":data[i][4],"Weight":data[i][5],"Team":data[i][6],"NOC":data[i][7],"Games":data[i][8],"Year":data[i][9],"Season":data[i][10],"City":data[i][11],"Sport":data[i][12],"Event":data[i][13],"Medal":data[i][14]}]
        else:
            x[data[i][9]]={data[i][7]:[{"ID":data[i][0],"Name":data[i][1],"Sex":data[i][2],"Age":data[i][3],"Height":data[i][4],"Weight":data[i][5],"Team":data[i][6],"NOC":data[i][7],"Games":data[i][8],"Year":data[i][9],"Season":data[i][10],"City":data[i][11],"Sport":data[i][12],"Event":data[i][13],"Medal":data[i][14]}]}
    athletes_by_Year_NOC=dict(x)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    d=athletes_by_Year_NOC
    x={}
    for e in d[year]:
        x[e]=[0,0,0]
        for i in range(len(d[year][e])):
            if d[year][e][i]["Medal"]=="Gold":
                x[e][0]+=1
            if d[year][e][i]["Medal"]=="Silver":
                x[e][1]+=1
            if d[year][e][i]["Medal"]=="Bronze":
                x[e][2]+=1
        s=tuple(x[e])
        x[e]=s      
    medals = dict(x)
    return medals
#======================================
def get_top_five(medals):
    m=medals
    b=[]
    for e in m:
        if e not in b:
            b.append(e)
    b.sort()
    md=[]
    for e in m:
        md.append(m[e])
    max1=max(md)     
    md.remove(max1)
    max2=max(md)
    md.remove(max2)
    max3=max(md)
    md.remove(max3)
    max4=max(md)
    md.remove(max4)
    max5=max(md)
    x=[]
    nt=[]
    for e in b:
        if m[e]==max1:
            x.append((e,max1[0],max1[1],max1[2]))
            nt.append(e)
            break
    for e in b:
        if e not in nt:
            if m[e]==max2:
                x.append((e,max2[0],max2[1],max2[2]))
                nt.append(e)
                break
    for e in b:
        if e not in nt:
            if m[e]==max3:
                x.append((e,max3[0],max3[1],max3[2]))
                nt.append(e)
                break
    for e in b:
        if e not in nt:
            if m[e]==max4:
                x.append((e,max4[0],max4[1],max4[2]))
                nt.append(e)
                break
    for e in b:
        if e not in nt:
            if m[e]==max5:
                x.append((e,max5[0],max5[1],max5[2]))
                nt.append(e)
    topfive = list(x)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    x=[]
    year=[]
    year.sort()
    for i in range(start,end+1):
        if str(i) in d:
            if NOC in d[str(i)] :
                year.append(str(i))
    for e in year:
        m=get_medals_by_team(athletes_by_Year_NOC, e) #medals
        x.append((e,m[NOC][0],m[NOC][1],m[NOC][2]))
    trend = list(x)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    d=athletes_by_Year_NOC
    sports = set()
    if year in d:
        if NOC in d[year]:
            for i in range(len(d[year][NOC])):
                e=d[year][NOC][i]["Medal"]
                sp=d[year][NOC][i]["Sport"]
                if e =="Gold":
                    sports.add(sp)
                elif e=="Silver":
                    sports.add(sp)
                elif e=="Bronze":
                    sports.add(sp)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    d=athletes_by_Year_NOC
    its=set()
    sm=set()
    for e in NOCs:
        if e in d[year]:
            s=get_sports(d, e, year)
            if len(sm)==0:
                sm.update(s)
            else:
                its = s.intersection(sm)
                if len(its)==0:
                    return its
                else:
                    sm.update(its) 
    sports=its
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530281621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 1292, 'const': 840, 'code+const': 2132}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {} ; year = 9 ; nation = 7
  for k in range(0,len(data)-1) :
    key = data[k+1][year] ; noc = data[k+1][nation] ; s = {}
    if key not in athletes_by_Year_NOC :
      value = {}
      for i in range(15) :
        s[data[0][i]] = data[k+1][i]
      value[noc] = [s]
      athletes_by_Year_NOC[key] = value
    else :
      t = {}
      for i in range(15) :
        t[data[0][i]] = data[k+1][i]
      if noc in athletes_by_Year_NOC[key]  :
        athletes_by_Year_NOC[key][noc].append(t)
      else :
        athletes_by_Year_NOC[key][noc] = [t]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC :
    for k in athletes_by_Year_NOC[year] :
      gold = 0 ; silver = 0 ; bronze = 0
      source = athletes_by_Year_NOC[year][k]
      for i in range(len(source)) :
        if source[i]["Medal"] == "Gold" :
          gold += 1
        elif source[i]["Medal"] == "Silver" :
          silver += 1
        elif source[i]["Medal"] == "Bronze" :
          bronze += 1
        else :
          pass
      medals[k] = (gold,silver,bronze)
  else :
    return medals  
  return medals
#======================================
def get_top_five(medals):
  topfive = [] ; source = medals ; x = [] ; keep = []
  if len(source) == 0 :
    return topfive
  for e in sorted(source.values())[-1::-1] :
    keep.append(e)
  for a,b in source.items():
    x.append([b,a])
  reverse = sorted(x)[-1::-1]
  i = 0 ; tempo = [] ; k = 0
  while len(topfive) < 5 :
    if keep[i] == keep[i+1] :
      k += 1
      tempo.append([reverse[i][1],keep[i]])
    else :
      if k > 0 :
        tempo.append([reverse[i][1],keep[i]])
        for a,b in sorted(tempo) :
          topfive.append((a,)+b)
        k = 0 ; tempo = []
      else :
        topfive.append((reverse[i][1],)+keep[i])
        k = 0
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = [] ; sou = athletes_by_Year_NOC ; nation = NOC ; s = []
  for year in range(start,end+1) :
    if str(year) in sou :
      if nation in get_medals_by_team(sou, str(year)) :
        x = get_medals_by_team(sou, str(year))[nation]
        trend.append((str(year),)+x)
      else :
        pass
    else :
      pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set() ; come = athletes_by_Year_NOC ; nation = NOC ; yea = year
  if yea in come :
    x = come[yea]
    if nation in x :
      for i in range(len(x[nation])) :
        if x[nation][i]["Medal"] != "NA" :
          sports.add(x[nation][i]["Sport"])
        else :
          pass
    else :
      pass
  else :
    pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set() ; came = athletes_by_Year_NOC
  x = {} ; count = [] ; nations = NOCs ; ye = year
  for e in nations :
    count.append(e)
    if ye in came :
      y = get_sports(came, e, ye)
      if y != set() :
        for i in y :
          if e not in x :
            x[e] = {i}
          else :
            x[e].add(i)
      else :
        x[e] = set()  
    else :
      x[e] = set()
  for k in range(len(count)-1) :
    if x[count[k]] & x[count[k+1]] != set() :
      sports = x[count[k]] & x[count[k+1]]
    else :
      sports = set()
      break
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530335921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 974, 'const': 928, 'code+const': 1902}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  a = data[0]
  for i, val in enumerate(data) :
    if i == 0: continue
    f = {}
    for j in range(len(a)) :
      f[a[j]] = val[j]
    if val[9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[val[9]] = {val[7] : []}
    else :
      if val[7] not in athletes_by_Year_NOC[val[9]] :
        athletes_by_Year_NOC[val[9]][val[7]] = []
    athletes_by_Year_NOC[val[9]][val[7]].append(f)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for e in athletes_by_Year_NOC[year] :
    if e not in medals :
      medals[e] = {"Gold" : 0, "Silver" : 0, "Bronze" : 0}
    for i in range(len(athletes_by_Year_NOC[year][e])) :
      if athletes_by_Year_NOC[year][e][i]["Medal"] != "NA" :
        medals[e][athletes_by_Year_NOC[year][e][i]["Medal"]] += 1
    medals[e] = (medals[e]["Gold"], medals[e]["Silver"], medals[e]["Bronze"])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  dd = []
  checker = []
  for key,value in medals.items() :
    if value not in checker :
      dd.append([value, [key]])
      checker.append(value)
    else :
      for d in range(len(dd)) :
        if dd[d][0] == value :
          dd[d][1].append(key)
  dd.sort()
  dd = dd[::-1]
  num = 5
  for g in range(len(dd)) :
    dd[g][1].sort()
    for e in dd[g][1] :
      topfive.append((e, dd[g][0][0], dd[g][0][1], dd[g][0][2]))
      num -= 1
    if num <= 0: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  initial = start
  eq = end + 1
  for i in range(initial, eq) :
    toString = str(i)
    if i in [int(g) for g in athletes_by_Year_NOC] :
      for f in get_medals_by_team(athletes_by_Year_NOC, toString) :
        if f == NOC :
          goldValue, silverValue, bronzeValue = get_medals_by_team(d, toString)[f]
          trend.append((toString, goldValue, silverValue, bronzeValue))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for g in athletes_by_Year_NOC[year][NOC] :
        if len(g["Medal"]) != 2 :
          sports.add(g["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  check = True
  for e in NOCs :
    if not check :
      sports = sports.intersection(get_sports(athletes_by_Year_NOC, e, year))
    else :
      sports = get_sports(athletes_by_Year_NOC, e, year)
      check = False
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530418321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1010, 'const': 1004, 'code+const': 2014}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data_collect = data[0]
  for i in range(1, len(data)) :
    f = {}
    for j in range(len(data_collect)) :
      f[data_collect[j]] = data[i][j]
    if data[i][9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[data[i][9]] = {data[i][7] : []}
    else :
      if data[i][7] not in athletes_by_Year_NOC[data[i][9]] :
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(f)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for data in athletes_by_Year_NOC[year] :
    if data not in medals :
      medals[data] = [0,0,0]
    for i in range(len(athletes_by_Year_NOC[year][data])) :
      if athletes_by_Year_NOC[year][data][i]["Medal"] == "Bronze" :
        medals[data][2] += 1
      elif athletes_by_Year_NOC[year][data][i]["Medal"] == "Silver" :
        medals[data][1] += 1
      elif athletes_by_Year_NOC[year][data][i]["Medal"] == "Gold" :
        medals[data][0] += 1
    medals[data] = tuple(medals[data])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  new_d = []
  f = set()
  for k,v in medals.items() :
    if v not in f :
      new_d.append([v, [k]])
      f.add(v)
    else :
      for i in range(len(new_d)) :
        if new_d[i][0] == v :
          new_d[i][1].append(k)
  new_d.sort(reverse = True)
  n = 5
  for i in range(len(new_d)) :
    new_d[i][1].sort()
    for e in new_d[i][1] :
      topfive.append((e, new_d[i][0][0], new_d[i][0][1], new_d[i][0][2]))
      n -= 1
    if n <= 0: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end + 1) :
    if str(i) in athletes_by_Year_NOC :
      for e in get_medals_by_team(d, str(i)) :
        if e == NOC :
          g,s,b = get_medals_by_team(d, str(i))[e]
          trend.append((str(i), g, s, b))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for e in athletes_by_Year_NOC[year][NOC] :
        if e["Medal"] != "NA" :
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  i = True
  for NOC in NOCs :
    if i :
      sports = get_sports(athletes_by_Year_NOC, NOC, year)
      i = False
    sports &= get_sports(athletes_by_Year_NOC, NOC, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530424021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('EC', (1, 1, 1)), ('CE', (1, 1, 1)), ('DA', (1, 1, 0)), ('B', (1, 1, 0)), ('AD', (1, 1, 0))],
 [('B', (1, 1, 1)), ('A', (1, 1, 0)), ('D', (1, 0, 1)), ('F', (1, 0, 0)), ('C', (0, 1, 0))],
 [('C', (9, 10, 9)), ('E', (9, 10, 8)), ('A', (9, 9, 9)), ('F', (9, 7, 9)), ('DB', (9, 2, 1)),
  ('BD', (9, 2, 1))],
 [('Q', (3, 3, 3)), ('ZA', (3, 2, 1)), ('SB', (3, 2, 1)), ('NF', (3, 2, 1)), ('MJ', (3, 2, 1)),
  ('K', (3, 2, 1)),
  ('JM', (3, 2, 1)), ('FN', (3, 2, 1)), ('BS', (3, 2, 1)), ('AZ', (3, 2, 1))]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 1162, 'const': 943, 'code+const': 2105}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)) :
        y = {}
        if not data[i][9] in athletes_by_Year_NOC :
            athletes_by_Year_NOC[data[i][9]] = {data[i][7]: []}
            for k in range(len(data[0])) :
               y[data[0][k]] = data[i][k] 
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(y)
        else :
            if not data[i][7] in athletes_by_Year_NOC[data[i][9]] :
               athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
            for k in range(len(data[0])) :
                y[data[0][k]] = data[i][k]
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(y)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC :
        for k in athletes_by_Year_NOC[year].keys() :
            G = 0
            S = 0
            B = 0
            for i in range(len(athletes_by_Year_NOC[year][k])) :
                if athletes_by_Year_NOC[year][k][i]['Medal'] == 'Gold' :
                    G += 1
                if athletes_by_Year_NOC[year][k][i]['Medal'] == 'Silver' :
                    S += 1
                if athletes_by_Year_NOC[year][k][i]['Medal'] == 'Bronze' :
                    B += 1
            medals[k] = (G,S,B)
  return medals
#======================================
def get_top_five(medals):
    topfive = []
    x = []
    for k in medals.keys() :
        x.append((medals[k],k))
    x.sort()
    a = x[-1::-1]
    for i in range(len(a)) :
        if i <= 4 : 
            topfive.append((a[i][1],a[i][0]))
        else :
            if a[i][0] == topfive[4][1] :
                topfive.append((a[i][1],a[i][0]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    Y = []
    M = []
    for k in athletes_by_Year_NOC.keys() :
        Y.append(k)
    Y.sort()
    for k in Y :
        if NOC in athletes_by_Year_NOC[k] :
            M.append(k)
    for c in M :
        if int(c) >= start and int(c) <= end :
            trend.append((c,)+(get_medals_by_team(athletes_by_Year_NOC, c)[NOC]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
        for i in range(len(athletes_by_Year_NOC[year][NOC])) :
            if athletes_by_Year_NOC[year][NOC][i]['Medal'] != 'NA' :
                sports.add(athletes_by_Year_NOC[year][NOC][i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    m = []
    x = list(NOCs)
    for i in range(len(x)) :
        f = set()
        if x[i] in athletes_by_Year_NOC[year].keys() :
            for k in range(len(athletes_by_Year_NOC[year][x[i]])) :
                if athletes_by_Year_NOC[year][x[i]][k]['Medal'] != 'NA' :
                    f.add(athletes_by_Year_NOC[year][x[i]][k]['Sport'])
        m.append(f)
    for i in range(1,len(m)) :
        sports = m[i].intersection(m[i-1])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532060621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0NameError("name 'd' is not defined")
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0NameError("name 'd' is not defined")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1076, 'const': 1072, 'code+const': 2148}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      b={}
      for j in range(len(data[0])):
        b[data[0][j]]=data[i][j] #ทำ list ของ dict (ในสุดขึ้นมา)
      if data[i][9] not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[data[i][9]]={}
          if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]]=[]
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(b)
          else:
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(b)
      else:    
          if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]]=[]
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(b)
          else:
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(b)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc in athletes_by_Year_NOC[year]:
    a=[0,0,0]
    for f in athletes_by_Year_NOC[year][noc]:
        if f["Medal"]=="Gold":
          a[0]+=1
        elif f["Medal"]=="Silver":
          a[1]+=1
        elif f["Medal"]=="Bronze":
          a[2]+=1
    medals[noc]=tuple(a)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a=[]
  for e in medals:
    a.append([-medals[e][0],-medals[e][1],-medals[e][2],e])
  b=sorted(a)
  c=[]
  for e in b:
    c.append((e[3],-e[0],-e[1],-e[2]))
  x,y,z=-1,-1,-1
  cnt=0
  for e in c:
    if (e[1]!=x or e[2]!=y or e[3]!=z) and cnt>=5 :
      break
    cnt+=1
    topfive.append(e)
    x,y,z=e[1],e[2],e[3]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(int(start),int(end)+1):
    if str(i) in athletes_by_Year_NOC:
      a=get_medals_by_team(d,str(i))
      if NOC in a:
        b=a[NOC]
        trend.append((str(i),b[0],b[1],b[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
        if e["Medal"] != "NA":
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  cnt=0
  for e in NOCs:
    a=get_sports(athletes_by_Year_NOC,e,year)
    if cnt==0:
      sports=a
    sports=sports.intersection(a)
    cnt+=1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532079621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0NameError("name 'data' is not defined")
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.0NameError("name 'data' is not defined")
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 856, 'const': 1015, 'code+const': 1871}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)) :
      year = data[i][9]
      NOC = data[i][7]
      if year not in athletes_by_Year_NOC :
          athletes_by_Year_NOC[year] = {}
          athletes_by_Year_NOC[year][NOC] = [arrange_data(data[i])]
      else :
          if NOC in athletes_by_Year_NOC[year] :
              athletes_by_Year_NOC[year][NOC].append(arrange_data(data[i]))
          else :
              athletes_by_Year_NOC[year][NOC] = [arrange_data(data[i])]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    medals_l = {}
    if year in athletes_by_Year_NOC :
      for n in athletes_by_Year_NOC[year] :
          medals_l[n] = [0,0,0]
          for e in athletes_by_Year_NOC[year][n] :
              if e['Medal'] == 'Gold' :
                  medals_l[n][0] += 1
              elif e['Medal'] == 'Silver' :
                  medals_l[n][1] += 1
              elif e['Medal'] == 'Bronze' :
                  medals_l[n][2] += 1
      for e in medals_l :
          medals[e] = tuple(medals_l[e])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    new_med = {}
    for k,v in medals.items() :
        if v not in new_med :
            new_med[v] = [k]
        else :
            new_med[v].append(k)
    same = False
    coun = ''
    i = 0
    while i < 5 :
        max_s = max(new_med)
        coun = new_med[max_s]
        for e in sorted(coun) :
            topfive.append((e,) + max_s)
            i += 1
        new_med.pop(max_s)
        k = max_s
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1) :
        if i % 2 == 0 :
          if NOC in get_medals_by_team(athletes_by_Year_NOC,str(i)) :
            trend.append((str(i),) + get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
      if NOC in athletes_by_Year_NOC[year] :
        for sub_d in athletes_by_Year_NOC[year][NOC] :
            sport = sub_d['Sport']
            if sport not in sports and sub_d['Medal'] != 'NA':
                sports.add(sport)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = get_sports(athletes_by_Year_NOC,list(NOCs)[0],year)
    for e in NOCs :
        sports = sports.intersection(get_sports(athletes_by_Year_NOC,e,year))   
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def arrange_data(t) :
    dic = {}
    for i in range(len(data[0])) :
        dic[data[0][i]] = t[i]
    return dic

6532094021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('tuple index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1628, 'const': 1500, 'code+const': 3128}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}  
  for i in range(len(data)-1):
    X = {}
    add = {data[0][0]:data[i+1][0], data[0][1]:data[i+1][1], data[0][2]:data[i+1][2], data[0][3]:data[i+1][3], data[0][4]:data[i+1][4], data[0][5]:data[i+1][5], data[0][6]:data[i+1][6], data[0][7]:data[i+1][7], data[0][8]:data[i+1][8], data[0][9]:data[i+1][9], data[0][10]:data[i+1][10], data[0][11]:data[i+1][11], data[0][12]:data[i+1][12], data[0][13]:data[i+1][13], data[0][14]:data[i+1][14]}
    if data[i+1][9] in athletes_by_Year_NOC:
      if data[i+1][7] in athletes_by_Year_NOC[data[i+1][9]]:
        athletes_by_Year_NOC[data[i+1][9]][data[i+1][7]].append(add)
      else:
        athletes_by_Year_NOC[data[i+1][9]][data[i+1][7]] = [add]
    else:
      X[data[i+1][7]] = [add]
      athletes_by_Year_NOC[data[i+1][9]] = X
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
    noc = [0,0,0]
    for j in range(len(athletes_by_Year_NOC[year][i])):
      if athletes_by_Year_NOC[year][i][j]['Medal'] == "Gold":
        noc[0] += 1
      elif athletes_by_Year_NOC[year][i][j]['Medal'] == "Silver":
        noc[1] += 1
      elif athletes_by_Year_NOC[year][i][j]['Medal'] == "Bronze":
        noc[2] += 1
      tuple_noc = tuple(noc)
    medals[i] = tuple_noc
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  noclist = []
  medallist = []
  for i in medals:
    noclist.append(i)
    medallist.append(medals[i])
  medallist, noclist = zip(*sorted(zip(medallist, noclist), reverse=True))
  i = 0
  samepoint = []
  samepoint.append(noclist[4])
  while medallist[i+4] == medallist[i+5]:
    samepoint.append(noclist[i+5])
    i += 1 
  samepoint.sort()
  for i in range(4):
    topfive.append((noclist[i],medallist[i][0],medallist[i][1],medallist[i][2]))
  for i in (samepoint):
    topfive.append((i,medallist[4][0],medallist[4][1],medallist[4][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  years = def4yearlist(athletes_by_Year_NOC, NOC)
  for i in range(start, end+1):
    if str(i) in years:
      x = get_medals_by_team(athletes_by_Year_NOC, str(i))
      trend.append((i,x[NOC][0],x[NOC][1],x[NOC][2]))  
    else:
      pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  allyears = def4yearlist(athletes_by_Year_NOC, NOC)
  if year in allyears:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i["Sport"] in sports:
        pass
      elif i["Medal"] != "NA":
        sports.add(i["Sport"])
  else:
    pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sportslist = []
  for i in NOCs:
    sportslist.append(get_sports(athletes_by_Year_NOC, i, year))
  sports = set.intersection(*sportslist)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def def4yearlist(d, x):
  yearlist = []
  for i in d:
    for j in d[i]:
      if j == x:
        if i in yearlist:
          pass
        else:
          yearlist.append(i)
      else:
        pass
  return yearlist
def listyear(data):
  listyear = []
  for i in range(len(data)-1):
    if data[i+1][9] in listyear:
      pass
    else:
      listyear.append(data[i+1][9])
  return listyear
def listnoc(data):
  listnoc = []
  for i in range(len(data)-1):
    if data[i+1][7] in listnoc:
      pass
    else:
      listnoc.append(data[i+1][7])
  return listnoc

6532095621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 1318, 'const': 920, 'code+const': 2238}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    athletes_by_Year_NOC = {}
    nation = {}
    x = []
    for i in range(1, len(data)):
        pre_ath = {}
        for j in range(len(data[0])):
                pre_ath[data[0][j]] = data[i][j]
        if data[i][9] not in athletes_by_Year_NOC: 
            athletes_by_Year_NOC[data[i][9]] = {}
            if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(pre_ath)
            else:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(pre_ath)
        elif data[i][9] in athletes_by_Year_NOC:
            if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(pre_ath)
            else:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(pre_ath)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for j in athletes_by_Year_NOC[year]:
        g = 0
        s = 0
        b = 0
        for k in athletes_by_Year_NOC[year][j]:
            if k["Medal"] == "Gold":
                g += 1
            elif k["Medal"] == "Silver":
                s += 1
            elif k["Medal"] == "Bronze":
                b += 1
        medals[j] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  sortednSwap = sorted([(-medals[t][0], -medals[t][1], -medals[t][2], t) for t in medals])
  i = 0
  while i < 5:
    while (-sortednSwap[i][0],-sortednSwap[i][1],-sortednSwap[i][2]) == (-sortednSwap[i+1][0],-sortednSwap[i+1][1],-sortednSwap[i+1][2]):
      topfive.append((sortednSwap[i][3],-sortednSwap[i][0],-sortednSwap[i][1],-sortednSwap[i][2]))
      i += 1
    topfive.append((sortednSwap[i][3],-sortednSwap[i][0],-sortednSwap[i][1],-sortednSwap[i][2]))
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]:
            trend.append((str(i),)+get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC])    
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        for i in athletes_by_Year_NOC[year]:
            if i == NOC:
                for j in athletes_by_Year_NOC[year][i]:
                    if j["Medal"] != "NA":
                        sports.add(j["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    d = []
    for e in NOCs:
        d.append(get_sports(athletes_by_Year_NOC, e, year))
    if set() not in d:
        for i in range(len(d)-1):
            x = d[i]&d[i+1]
            for j in range(i,len(d)):
                y = x&d[j]
        for k in y:
            sports.add(k)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532122921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1006, 'const': 1297, 'code+const': 2303}
check_import({'allowable': ['math', 'csv']}) deep: none
import csv
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    ch = True
    c = 0
    for x in data:
        if ch:
            ch = False
            continue
        dic = {}
        for i in range(len(data[0])):
            dic[data[0][i]] = x[i]
        if x[9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[x[9]] = {}
        if x[7] not in athletes_by_Year_NOC[x[9]]:
            athletes_by_Year_NOC[x[9]][x[7]] = []
        athletes_by_Year_NOC[x[9]][x[7]].append(dic)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for x in athletes_by_Year_NOC[year]:
        g = 0
        s = 0
        b = 0
        for y in range(len(athletes_by_Year_NOC[year][x])):
            if athletes_by_Year_NOC[year][x][y]["Medal"] == "Gold":
                g += 1
            elif athletes_by_Year_NOC[year][x][y]["Medal"] == "Silver":
                s += 1
            elif athletes_by_Year_NOC[year][x][y]["Medal"] == "Bronze":
                b += 1
        medals[x] = (g, s, b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    ls = []
    for x in medals:
        ch = 1000000
        sum_test = 0
        for y in medals[x]:
            sum_test += y*ch
            ch //= 1000
        ls.append([sum_test, x])
    ls = sorted(ls, key=lambda x: (-x[0], x[1]))
    i = 0
    bf = []
    ch = 5 if len(ls) >= 5 else len(ls)
    for x in ls:
        topfive.append((x[1], medals[x[1]][0], medals[x[1]][1], medals[x[1]][2]))
        i += 1
        if ls[i] == ls[i+1]:
            ch += 1
        if i == ch:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for x in range(start, end+1):
        if str(x) in athletes_by_Year_NOC.keys():
            g = 0
            s = 0
            b = 0
            try:
                for y in athletes_by_Year_NOC[str(x)][NOC]:
                    if y["Medal"] == "Gold":
                        g += 1
                    elif y["Medal"] == "Silver":
                        s += 1
                    elif y["Medal"] == "Bronze":
                        b += 1
                trend.append((x, g, s, b))
            except:
                pass
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    try:
        for y in athletes_by_Year_NOC[year][NOC]:
            if y["Medal"] != "NA":
                sports.add(y["Sport"])
    except:
        pass
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    ls = []
    for NOC in NOCs:
        ss = get_sports(athletes_by_Year_NOC, NOC, year)
        ls.append(ss)
    sports = ls[0]
    for i in range(1, len(ls)):
        sports = sports.intersection(ls[i])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
#print(len(data))

6532159121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0Time-out: 3s
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0Time-out: 3s
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1122, 'const': 1128, 'code+const': 2250}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    title = data[0]
    for row in data[1:]:
        year, noc = row[9], row[7]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athlete_dict = {}
        for i in range(len(title)):
            athlete_dict[title[i]] = row[i]
        athletes_by_Year_NOC[year][noc].append(athlete_dict)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    set=[];n=[];c=0;g=0;s=0;b=0
    try:athletes_by_Year_NOC[year]
    except: return medals
    v = athletes_by_Year_NOC[year]
    for a in v.keys():
        medals[a]=0
        n.append(a)
    for i in v:
        sc=(g, s, b)
        g=0;s=0;b=0
        for e in v[i]:
            if e['Medal'] == 'Gold':
                g+=int(1)
            elif e['Medal'] == 'Silver':
                s+=int(1)
            elif e['Medal'] == 'Bronze':
                b+=int(1)
            else:
                continue
        sc=(g, s, b)
        medals[n[c]]=sc
        c+=1
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    c=0;cc=0;u=();v=()
    K = list(medals.keys())
    K.sort()
    smedals = {n: medals[n] for n in K}
    sm=sorted(smedals.items(), key=lambda x:x[1], reverse=True )
    for i in sm:
        g=i[1][0];s=i[1][1];b=i[1][2]
        v=(i[0], g, s, b)
        cs=(g, s, b)
        if (c == 5 and cs!=u) :
          break 
        topfive.append(v)
        c+=1
        u = cs
        cc+=1
        if c==6:
            c=5
        if cc==(len(sm)): 
          break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    vi=[];v=()
    y=[]
    while True :
        y.append(start)
        start+=1
        if start==end:
            y.append(start)
            break
    for a in y:
        e=(get_medals_by_team(athletes_by_Year_NOC, str(a)))
        if e == {}:
            continue
        else :
            try :ei=e[NOC]
            except :continue
            ei=e[NOC]
            g=ei[0];s=ei[1];b=ei[2]
            v=(str(a), g, s, b)
            trend.append(v)      
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  try : athletes_by_Year_NOC[year]
  except: return sports
  v=athletes_by_Year_NOC[year]
  try : v[NOC]
  except : return sports
  for i in v[NOC]:
    if i['Medal'] == 'NA':
      continue
    else:
      sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  v=[]
  for i in NOCs:
    v+=(get_sports(athletes_by_Year_NOC,i,year))
  sports = {x for x in v if v.count(x)>(len(NOCs)-1)}
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530348021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.68
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('FA', 3, 2, 1), ('KB', 3, 2, 1), ('JF', 3, 2, 1), ('SJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('BM', 3, 2, 1), ('AN', 3, 2, 1), ('MS', 3, 2, 1), ('NZ', 3, 2, 1)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.59
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 976, 'const': 1257, 'code+const': 2233}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  col = data[0]
  team_idx = col.index('NOC')
  year_idx = col.index('Year')
  for d in data[1:]:
    tmp = dict()
    for i in range(len(d)):
      if i in [team_idx, year_idx]:
        continue
      tmp[col[i]] = d[i]
    year = d[year_idx]
    team = d[team_idx]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if team not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][team] = []
    athletes_by_Year_NOC[year][team].append(tmp)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for team, players in athletes_by_Year_NOC[year].items():
    g, s, b = 0, 0, 0
    for p in players:
      if p['Medal'] == 'Bronze':
        b += 1
      elif p['Medal'] == 'Silver':
        s += 1
      elif p['Medal'] == 'Gold':
        g += 1
    medals[team] = (g, s, b)
  return medals
#======================================
def get_top_five(medals):
  sort_laew = sorted(
      [(team, g, s, b) for team, (g, s, b) in medals.items()], 
      key=lambda x: (x[1], x[2], x[3]),
      reverse=True
  )
  res = sort_laew[:5]
  i = 5
  while i < len(sort_laew) and (res[4][1], res[4][2], res[4][3]) == (sort_laew[i][1], sort_laew[i][2], sort_laew[i][3]):
    res.append(sort_laew[i])
    i += 1
  return res
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  if start % 2:
    start += 1
  if end % 2:
    end -= 1
  trend = []
  for year in range(start, end, 2):
    year = str(year)
    if year not in athletes_by_Year_NOC:
      continue
    if NOC not in athletes_by_Year_NOC[year]:
      continue
    medals = get_medals_by_team(athletes_by_Year_NOC, year)[NOC]
    trend.append((year, medals[0], medals[1], medals[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  if NOC not in athletes_by_Year_NOC[year]:
    return sports
  for p in athletes_by_Year_NOC[year][NOC]:
    if p['Medal'] in ['Bronze', 'Silver', 'Gold']:
      sports.add(p['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = None
  if(set()):
    print("hi")
  i = 0
  for NOC in NOCs:
    s = get_sports(athletes_by_Year_NOC, NOC, year)
    #print(NOC,year,s)
    if(i == 0):
      sports = s
      i+=1
    else:
      sports = sports.intersection(s)
      #print("this is sport",sports)
      if sports == set():
        return set()
    # if sports:
      # sports = sports.intersection(s)
      # print("this is sport",sports)
      # if sports == set():
      #   return set()
    # else:
    #   sports = s
    #print(sports)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532162021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.68
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('FA', 3, 2, 1), ('KB', 3, 2, 1), ('JF', 3, 2, 1), ('SJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('BM', 3, 2, 1), ('AN', 3, 2, 1), ('MS', 3, 2, 1), ('NZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 850, 'const': 832, 'code+const': 1682}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(len(data)):
        year=data[i][9]
        noc=data[i][7]
        info={}
        for j in range(len(data[0])) :
            info[data[0][j]] = data[i][j]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year]={noc:[info]}
        else:
            if noc not in athletes_by_Year_NOC[year]:
              athletes_by_Year_NOC[year][noc]=[info]
            else:
              athletes_by_Year_NOC[year][noc].append(info)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  bronze=0
  silver=0
  gold=0
  for coun in athletes_by_Year_NOC[year]:
    for p in athletes_by_Year_NOC[year][coun] :
      medal= p['Medal']
      if medal == 'Bronze':
        bronze+=1
      elif medal == 'Silver':
        silver+=1
      elif medal == 'Gold':
        gold+=1
    medal = (gold,silver,bronze)
    medals[coun] = medal
    bronze=0
    silver=0
    gold=0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  new = {}
  for name in medals:
    if medals[name] in new :
      new[medals[name]].append(name)
    else :
      new[medals[name]] = [name]
  i=0
  while i < 5:
    max_medal = max(new)
    names = new[max_medal]
    for e in names :
      topfive.append((e,)+max_medal)
      i += 1
    new.pop(max_medal)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if i%2 ==0 and NOC in athletes_by_Year_NOC[str(i)]  :
      score=get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]  
      trend.append((str(i),)+score)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
    for i in range(len(athletes_by_Year_NOC[year][NOC])):
      medal=athletes_by_Year_NOC[year][NOC][i]['Medal']
      if medal != 'NA' :
        sport=athletes_by_Year_NOC[year][NOC][i]['Sport']
        sports.add(sport)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  country = []
  if year not in athletes_by_Year_NOC:
    return set() 
  for i in NOCs:
    country.append(get_sports(athletes_by_Year_NOC, i, year))
  if len(country) <= 1 : 
    return set()
  sports = sports.union(country[0])
  for i in range(1,len(country)):
    sports = sports.intersection(country[i])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532018321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.39
[[('AC', 1, 1, 01), ('BE', 1, 1, 01), ('CA', 1, 1, 10), ('DB', 1, 1, 0), ('ED', 1, 1, 10)],
 [('AB', 1, 1, 01), ('BA', 1, 1, 10), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('BF', 9, 27, 19), ('CB', 9, 102, 91), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1),
  ('N', 3, 2, 1), ('PS', 3, 2, 0), ('Q', 3, 3, 31), ('SZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1120, 'const': 1265, 'code+const': 2385}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    year = data[0].index('Year')
    noc = data[0].index('NOC')
    for i in data:
        tmp = {}
        for j in range(len(data[0])):
            tmp[data[0][j]] = i[j]
        if not i[year] in athletes_by_Year_NOC:
            athletes_by_Year_NOC[i[year]] = {}
        if not i[noc] in athletes_by_Year_NOC[i[year]]:
            athletes_by_Year_NOC[i[year]][i[noc]] = []
        athletes_by_Year_NOC[i[year]][i[noc]].append(tmp)
    return athletes_by_Year_NOC
# ======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if not year in athletes_by_Year_NOC:
        return medals
    data = athletes_by_Year_NOC[year]
    for i in data:
        g, s, b = 0, 0, 0
        for j in data[i]:
            if j['Medal'] == "Gold":
                g += 1
            elif j['Medal'] == "Silver":
                s += 1
            elif j['Medal'] == "Bronze":
                b += 1
        medals[i] = (g, s, b)
    return medals
# ======================================
def get_top_five(medals):
    topfive = []
    gold_medal = sorted([(i, medals[i]) for i in medals if medals[i][0] != 0])
    silver_medal = sorted([(i, medals[i]) for i in medals if medals[i][0] == 0 and medals[i][1] != 0])
    bronze_medal = sorted([(i, medals[i]) for i in medals if medals[i][0] == 0 and medals[i][1] == 0])
    gold_medal.sort(reverse=True, key=lambda x: x[1][0])
    silver_medal.sort(reverse=True, key=lambda x: x[1][1])
    bronze_medal.sort(reverse=True, key=lambda x: x[1][2])
    medals = gold_medal + silver_medal + bronze_medal
    c = 0
    prev_medal = 0
    for i in medals:
        if c == 4 and i[1] != prev_medal:
            break
        tmp = (i[0],)
        for j in i[1]:
            tmp += (j,)
        if i[1] == prev_medal:
            topfive.append(tmp)
            continue
        topfive.append(tmp)
        prev_medal = i[1]
        c += 1
    return topfive
# ======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end + 1):
        tmp = (str(year),)
        d = get_medals_by_team(athletes_by_Year_NOC, str(year))
        if NOC in d:
            for i in d[NOC]:
                tmp += (i, )
            trend.append(tmp)
    return trend
# ======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if not year in athletes_by_Year_NOC:
        return sports
    d = athletes_by_Year_NOC[year]
    if not NOC in d:
        return sports
    for i in d[NOC]:
        if i['Medal'] != "NA":
            sports.add(i['Sport'])
    return sports
# ======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    s_list = []
    for i in NOCs:
        d = get_sports(athletes_by_Year_NOC, i, year)
        tmp = []
        for j in d:
            tmp.append(j)
        s_list.append(set(tmp))
    for i in s_list[1:]:
        sports = s_list[0].intersection(i)
    return sports
# ======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532177421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.52
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('ZA', 3, 2, 1), ('SB', 3, 2, 1), ('NF', 3, 2, 1), ('MJ', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('FN', 3, 2, 1), ('BS', 3, 2, 1), ('AZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 918, 'const': 1172, 'code+const': 2090}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for d in data:
    if d[9] not in athletes_by_Year_NOC.keys(): athletes_by_Year_NOC[d[9]] = {}
    dic = {}
    for k,v in zip(data[0],d):
      dic[k] = v
    if dic['NOC'] not in athletes_by_Year_NOC[d[9]]:
      athletes_by_Year_NOC[d[9]][dic['NOC']] = []
    athletes_by_Year_NOC[d[9]][dic['NOC']].append(dic)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  medal_prize = ["Gold","Silver","Bronze"]
  for k,v in athletes_by_Year_NOC[year].items():
    medals[k] = [0,0,0]
    for d in v:
      if d['Medal'] not in medal_prize: continue
      medals[k][medal_prize.index(d['Medal'])] += 1
  for k,v in medals.items(): medals[k] = tuple(v)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals_list = []
  medals_set = set()
  for k,v in medals.items(): 
    medals_list.append((k,*v))
    medals_set.add(v)
  medals_set = sorted(medals_set,reverse=True)[:5]
  pv = None
  for medal in sorted(medals_list,key=lambda x:(x[1],x[2],x[3],x[0]),reverse=True):
    if pv != medal[1:]:
      if len(topfive) > 5 or medal[1:] not in medals_set: break
      pv = medal[1:]
    topfive.append(medal)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  trend_set = {}
  medal_prize = ["Gold","Silver","Bronze"]
  for year in range(start,end+1):
    year = str(year)
    if year not in athletes_by_Year_NOC.keys(): continue
    if NOC not in athletes_by_Year_NOC[year].keys(): continue
    trend_set[year] = [0,0,0]
    for d in athletes_by_Year_NOC[year][NOC]:
      if d['Medal'] not in medal_prize: continue
      trend_set[year][medal_prize.index(d['Medal'])] += 1
  trend = [(k,*v) for k,v in trend_set.items()]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC.keys(): return sports
  if NOC not in athletes_by_Year_NOC[year].keys(): return sports
  for e in athletes_by_Year_NOC[year][NOC] :
    if e['Medal'] in ["Gold","Silver","Bronze"] :
      sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOC_sports = []
  for NOC in NOCs:
    NOC_sports.append(get_sports(athletes_by_Year_NOC, NOC, year))
  sports = NOC_sports[0] 
  for NOC_Country in NOC_sports[1:]:
    sports = sports.intersection(NOC_Country)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530383021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.34KeyError('B')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1238, 'const': 1209, 'code+const': 2447}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  inf = []
  noc = dict()
  y = []
  z = dict()
  c = 0
  topic = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
  for i in data:
    z = dict()
    c = 0
    for j in i:
        z[topic[c]] = j
        c += 1
    inf.append(z)
  inf.pop(0)                              
  for i in inf:
    if i['NOC'] in noc:
        noc[i['NOC']].append(i)
    else:
        noc[i['NOC']] = [i]
  athletes_by_Year_NOC = dict()
  x = list()
  year = []
  for i in inf:
      year+=[int(i['Year'])]
  for i in range(min(year),max(year)+1): 
    o = dict()
    for j in noc: 
        for k in noc[j]:
            if str(i) == k['Year'] and j == k['NOC']:
                x.append(k)
        o[j] = x
        x = list()
    athletes_by_Year_NOC[str(i)] = o
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    x = dict()
    d = athletes_by_Year_NOC
    medals = {}
    for i in d:
        for j in d[i]:
            med = [0,0,0]
            for k in d[i][j]:
                if k['Medal'] == 'Gold':
                    med[0] += 1
                elif k['Medal'] == 'Silver':
                    med[1] += 1
                elif k['Medal'] == 'Bronze':
                    med[2] += 1
            x[j] = tuple(med)
        medals[i] = x
        x = dict()
    medals = medals[year]
    return medals
#======================================
def get_top_five(medals):
    m = []
    x = []
    k = []
    t = list()
    s= []
    topfive = []
    for i in medals:
        x += [medals[i]]
    x.sort(reverse = True)
    for i in x:
        for j in medals:
            if i == medals[j] and j not in m:
                t+= [[j]+list(i)]
                m += [j]
    for i in t:
        k += [tuple(i)]
    for i in range(5):
        topfive += [k[i]]
    y = topfive[-1][1:]
    if y == k[5][1:]:
      s+=[topfive.pop(-1)]
      for i in range(5,len(k)):
                if y == k[i][1:]:
                    s += [k[i]]
      s.sort()
    topfive += s
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    k = []
    year = []
    for i in athletes_by_Year_NOC:
        if len(athletes_by_Year_NOC[i][NOC]) != 0:
            year += [i]
    year.sort()
    year = list(set(year))
    for i in range(start,end+1):
        if str(i) in year:
            x = get_medals_by_team(athletes_by_Year_NOC, str(i))
            k += [str(i)] + list(x[NOC])
            trend += [tuple(k)]
            k = []
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    y = []
    k = 0
    for i in athletes_by_Year_NOC:
        y+=[i]
    if year in y:
        s = list(get_medals_by_team(athletes_by_Year_NOC, year))     
        if NOC in s:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i['Medal'] != 'NA':
                    sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    y = []
    for i in NOCs:
        x = get_sports(athletes_by_Year_NOC, i, year)
        if len(sports) == 0:
            sports = x
        else:
            sports = sports.intersection(x)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530442321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.34KeyError('2001')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 802, 'const': 812, 'code+const': 1614}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  b = {}
  for i in range(1,len(data)):
    a = {}
    for e in range(len(data[0])):
      a[data[0][e]] = data[i][e]
    if not data[i][9] in b:
      b[data[i][9]] = {data[i][7]:[a]}
    elif data[i][7] in b[data[i][9]]:
      b[data[i][9]][data[i][7]].append(a)
    else:
      b[data[i][9]][data[i][7]] = [a] 
  return b
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  m = {}
  a = athletes_by_Year_NOC[year]
  for i in a:
    gold = 0 
    silver = 0
    bronze = 0 
    for e in a[i]:
      if e['Medal'] == 'Gold':
        gold += 1
      elif e['Medal'] == 'Silver':
        silver += 1
      elif e['Medal'] == 'Bronze':
        bronze += 1
      else:
        pass
    m[i] = (gold, silver, bronze)
  return m
#======================================
def get_top_five(medals):
  topfive = []
  a = []
  for i in medals:
    a.append([medals[i],i])
  b = sorted(a)[::-1]
  for e in range(len(b)):
    topfive.append((b[e][1],)+b[e][0])
    if e == 4 and b[4][0] != b[5][0]:
      break
    elif e > 4 and b[e][0] != b[e+1][0]:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if NOC in athletes_by_Year_NOC[str(i)]:
      a = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
      trend.append((str(i),)+a)
    else:
      pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  for i in athletes_by_Year_NOC[year][NOC]:
    if i['Medal'] != 'NA':
      sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for i in NOCs:
    if sports == set():
      sports = get_sports(athletes_by_Year_NOC, i, year)
    else:
      sports = get_sports(athletes_by_Year_NOC, i, year) & sports
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532010221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.61
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('BA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('AN', 3, 2, 1), ('BS', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 760, 'const': 965, 'code+const': 1725}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data:
    if e[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[e[9]] = {}
    if e[7] not in athletes_by_Year_NOC[e[9]]:
        athletes_by_Year_NOC[e[9]][e[7]] = []
    d = {}
    for i in range(len(e)):
        d[data[0][i]] = e[i]
    athletes_by_Year_NOC[e[9]][e[7]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  x = [0, 0, 0]
  for i in athletes_by_Year_NOC[year].keys():
    if i not in medals:
       medals[i] = ()
    for e in range(len(athletes_by_Year_NOC[year][i])):
       if athletes_by_Year_NOC[year][i][e]['Medal'] == 'Gold':
          x[0] += 1
       elif athletes_by_Year_NOC[year][i][e]['Medal'] == 'Silver':
          x[1] += 1
       elif athletes_by_Year_NOC[year][i][e]['Medal'] == 'Bronze':
          x[2] += 1
    medals[i] = (x[0], x[1], x[2])
    x = [0,0,0]
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sorted_dict = sorted(medals.items(), key=lambda x: x[1])
  for i in range(1,6):
     x = (sorted_dict[-i][0],) + sorted_dict[-i][1]
     topfive.append(x)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
     if str(i) in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[str(i)]:
           trend.append((str(i),) + get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
     for i in athletes_by_Year_NOC[year][NOC]:
        if i['Medal'] in ['Gold', 'Silver', 'Bronze']:
           sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  x = [*NOCs]
  y = []
  for i in x:
     y.append(get_sports(athletes_by_Year_NOC, i, year))
  sports = set.intersection(*y)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532066421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type0.0IndexError('list index out of range')
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.59
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1008, 'const': 916, 'code+const': 1924}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  kub = data
  for e in kub[1::]:
    details = {}
    for i in range(len(kub[0])):
      details[kub[0][i]] = e[i]
    if(not e[9] in athletes_by_Year_NOC):
      athletes_by_Year_NOC[e[9]] = {}
      athletes_by_Year_NOC[e[9]][e[7]] = [details]
    else:
      if(not e[7] in athletes_by_Year_NOC[e[9]]):
        athletes_by_Year_NOC[e[9]][e[7]] = [details]
      else:
        athletes_by_Year_NOC[e[9]][e[7]].append(details)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  kub = athletes_by_Year_NOC
  kay = year
  for NOC in kub[kay]:
    Gold_medal = 0 ; Silver_medal = 0 ; Bronze_medal = 0
    for details in kub[kay][NOC]:
      if(details['Medal'] == 'Gold'): Gold_medal += 1
      elif(details['Medal'] == 'Silver'): Silver_medal += 1
      elif(details['Medal'] == 'Bronze'): Bronze_medal += 1
    medals[NOC] = (Gold_medal , Silver_medal , Bronze_medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  d = {}
  l = []
  ham = []
  kk = medals
  for e in kk.items():
      l.append(e)
  for noc,b in l:
      if b not in d:
          d[b] = []
      d[b].append(noc)
  for e in d:
      k = sorted(d)[::-1]
  for e in k[:5]:
      ham.append(sorted(d[e]))
  for i in range(len(ham)):
      NOC,m1,m2,m3 = ham[i],k[:5][i][0],k[:5][i][1],k[:5][i][2]
      for e in NOC:
          if m1 != 0 or m2 != 0 or m3 != 0: topfive.append((e,m1,m2,m3))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  keke = athletes_by_Year_NOC
  st =start
  den = end
  noc = NOC
  for e in range(st,den):
    if(str(e) in keke and noc in keke[str(e)]):
      get_medals = get_medals_by_team(keke, str(e))
      trend.append((str(e), get_medals[noc][0], get_medals[noc][1], get_medals[noc][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  keke = athletes_by_Year_NOC
  noc = NOC
  ty = year
  if(ty in keke and noc in keke[ty]):
    for burger in keke[ty][noc]:
      if(burger['Medal'] != 'NA'):
        sports.add(burger['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  keke = athletes_by_Year_NOC
  ty =year
  noc = NOCs
  sport = [ get_sports(keke, burger, ty) for burger in noc ]
  sports = sport[0]
  for e in sport[1::]:
    sports = sports.intersection(e)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532045221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 918, 'const': 1933, 'code+const': 2851}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for row in data:
        year, noc = row[9], row[7]
        athlete_data = { "ID": row[0],
                         "Name": row[1],
                         "Sex": row[2],
                         "Age": row[3],
                         "Height": row[4],
                         "Weight": row[5],
                         "Team": row[6],
                         "NOC": noc,
                         "Games": row[8],
                         "Year": year,
                         "Season": row[10],
                         "City": row[11],
                         "Sport": row[12],
                         "Event": row[13],
                         "Medal": row[14] }
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(athlete_data)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals_by_team = {}
    if year in athletes_by_Year_NOC:
        for noc in athletes_by_Year_NOC[year]:
            medals = [0, 0, 0]
            for athlete in athletes_by_Year_NOC[year][noc]:
                medal = athlete["Medal"]
                if medal == "Gold":
                    medals[0] += 1
                elif medal == "Silver":
                    medals[1] += 1
                elif medal == "Bronze":
                    medals[2] += 1
            medals_by_team[noc] = tuple(medals)
    return medals_by_team
#======================================
def get_top_five(medals):
    topfive = []
    for noc, medal_count in sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0])):
        topfive.append((noc, medal_count[0], medal_count[1], medal_count[2]))
        if len(topfive) == 5:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        if str(year) not in athletes_by_Year_NOC:
            continue
        medals = [0, 0, 0]
        for athlete in athletes_by_Year_NOC[str(year)].get(NOC, []):
            medal = athlete["Medal"]
            if medal == "Gold":
                medals[0] += 1
            elif medal == "Silver":
                medals[1] += 1
            elif medal == "Bronze":
                medals[2] += 1
        if sum(medals) > 0:
            trend.append((str(year), medals[0], medals[1], medals[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for athlete in athletes_by_Year_NOC[year][NOC]:
                medal = athlete["Medal"]
                if medal == "Gold" or medal == "Silver" or medal == "Bronze":
                    sports.add(athlete["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        sports_by_NOC = {}
        for NOC in NOCs:
            sports_by_NOC[NOC] = get_sports(athletes_by_Year_NOC, NOC, year)
        common_sports = set.intersection(*[sports_by_NOC[NOC] for NOC in NOCs])
        sports = common_sports
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530254721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.89
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('W', 0, 0, 1),
  ('X', 0, 0, 1), ('Y', 0, 0, 1), ('Z', 0, 0, 1)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1242, 'const': 1361, 'code+const': 2603}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(len(data)):
    d = {} # create a new dictionary for each athlete
    for j in range(len(data[i])):
      d[data[0][j]] = data[i][j]
    if data[i][9] in athletes_by_Year_NOC:
      if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(d)
      else:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = [d]
    else:
      athletes_by_Year_NOC[data[i][9]] = {}
      if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = append(d)
      else:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = [d]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for i in athletes_by_Year_NOC[year]:
      l = [0,0,0]
      for j in athletes_by_Year_NOC[year][i]:
        if j['Medal'] == 'Gold':
          l[0] += 1
        elif j['Medal'] == 'Silver':
          l[1] += 1
        elif j['Medal'] == 'Bronze':
          l[2] += 1
      medals[i] = (l[0],l[1],l[2])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals = dict(sorted(medals.items()))
  d = [(k,v) for k, v in sorted(medals.items(), key=lambda item: item[1],reverse=True)]
  i = 0
  c = 0
  while True:
    if d==[]: break
    t = (d[i][0],d[i][1][0],d[i][1][1],d[i][1][2])
    if i >= len(d)-1:
      if d[i][1] == d[i-1][1]: 
        topfive.append(t)
      break
    elif d[i][1] == d[i+1][1]:
      topfive.append(t)
      c += 1
      i += 1
      continue
    if c >= 5:
      if d[i][1] == d[i-1][1]:
        topfive.append(t)
      break
    topfive.append(t)
    c += 1
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start,end+1):
    l = [0,0,0]
    if str(y) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(y)]:
      for j in athletes_by_Year_NOC[str(y)][NOC]:
        if j['Medal'] == 'Gold':
          l[0] += 1
        elif j['Medal'] == 'Silver':
          l[1] += 1
        elif j['Medal'] == 'Bronze':
          l[2] += 1
    # medal = (l[0],l[1],l[2])
      trend.append((str(y),l[0],l[1],l[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  t = []
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal'] != 'NA': 
        sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set() 
  sports = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
  for i in range(1,len(NOCs)):
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, list(NOCs)[i], year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530252421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('string index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1000, 'const': 1214, 'code+const': 2214}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  keys = data[0]
  for da in data[1:]:
    temp_dict = {keys[n]: da[n] for n in range(len(keys))}
    NOC = temp_dict['NOC']
    year = temp_dict['Year']
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][NOC] = []
    athletes_by_Year_NOC[year][NOC].append(temp_dict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  NOC = athletes_by_Year_NOC[year]
  for key in NOC:
    bronze = 0
    silver = 0
    gold = 0
    for info in NOC[key]:
      if info['Medal'] == 'Bronze':
        bronze += 1
      elif info['Medal'] == 'Silver':
        silver += 1
      elif info['Medal'] == 'Gold':
        gold += 1
    medals[key] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  top = []
  for medal in medals:
    info = medals[medal]
    top.append((medal, info[0], info[1], info[2]))
  top = sorted(top, key=lambda x: (x[1], x[2], x[3], -ord(x[0][0]), -ord(x[0][1]), -ord(x[0][2])), reverse=True)
  topfive.extend(top[:5])
  gold, silver, bronze = top[4][1:]
  i = 1
  while top[i+4][1] == gold and top[i+4][2] == silver and top[i+4][3] == bronze:
    topfive.append(top[i+4])
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start % 2 == 1:
    start += 1
  years = [str(year) for year in range(start, end+1, 2)]
  for year in years:
    medals = get_medals_by_team(athletes_by_Year_NOC, year)
    if NOC in medals:
      trend.append((year, medals[NOC][0], medals[NOC][1], medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    infos = athletes_by_Year_NOC[year][NOC]
    for info in infos:
      if info['Medal'] in ['Bronze', 'Silver', 'Gold']:
        sports.add(info['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  values = []
  for NOC in NOCs:
    values.append(get_sports(athletes_by_Year_NOC, NOC, year))
  if values:
    sports = values[0]
    for i in range(1, len(values)):
      sports = sports.intersection(values[i])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530313021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1228, 'const': 1132, 'code+const': 2360}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in  data[1:]:
    dic = {}
    for i in range(len(e)):
      dic[data[0][i]] = e[i]
    if e[9] not in athletes_by_Year_NOC: athletes_by_Year_NOC[e[9]] = {e[7] : [dic]}
    else : 
      if e[7] not in athletes_by_Year_NOC[e[9]]: athletes_by_Year_NOC[e[9]][e[7]] = [dic]
      else : athletes_by_Year_NOC[e[9]][e[7]].append(dic)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if int(year)%2 == 0:
    for e in athletes_by_Year_NOC[year]:
      for f in athletes_by_Year_NOC[year][e]:
        if f["NOC"] not in medals : medals[f["NOC"]] = [0,0,0]
        if f["Medal"].strip() == "Gold": medals[f['NOC']][0] += 1
        elif  f["Medal"].strip() == "Silver": medals[f['NOC']][1] += 1
        elif  f["Medal"].strip() == "Bronze": medals[f['NOC']][2] += 1
    for e in medals: medals[e] = tuple(medals[e])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  o = []
  for key,value in medals.items():
    o.append([value[0],value[1],value[2],key])
  o.sort()
  if len(o) >= 5 :
    for i in range(-1,-6,-1):
      topfive.append((-o[i][0],-o[i][1],-o[i][2],o[i][3]))
    i = -6
    while True:
      if o[i][0] != o[i+1][0] or o[i][2] != o[i+1][2] or o[i][1] != o[i+1][1] : break
      topfive.append((-o[i][0],-o[i][1],-o[i][2],o[i][3]))
      i-=1
  else :
    for i in range(-1,-len(o)-1,-1):
      topfive.append((-o[i][0],-o[i][1],-o[i][2],o[i][3]))
  topfive.sort()
  for i in range(len(topfive)) : topfive[i] = (topfive[i][3],-topfive[i][0],-topfive[i][1],-topfive[i][2])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  start,end = int(start),int(end)
  for i in range(start,end+1):
    if i%2 == 0:
      x = get_medals_by_team(athletes_by_Year_NOC,str(i))
      if NOC in x:
        trend.append((str(i),x[NOC][0],x[NOC][1],x[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
         if e["Medal"] in "Gold Silver Bronze":
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  tod = []
  for NOC in NOCs :
    tod.append(get_sports(athletes_by_Year_NOC, NOC, year))
  sports = tod[0]
  for i in range(1,len(tod)):
    sports = sports & tod[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530339421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1654, 'const': 1341, 'code+const': 2995}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    a = data[0]
    year = a.index('Year')
    NOC_ = a.index('NOC')
    for i in range(1,len(data),1):
        b = {}
        x = (data[i])[year]
        y = (data[i])[NOC_]
        n = len(data[i])
        for e in range(0,n,1):
            b[(data[0])[e]] = (data[i])[e]
        if not (x in athletes_by_Year_NOC) :
            athletes_by_Year_NOC[x] = {y:[b]}
        else:
            if y in athletes_by_Year_NOC[x]:
                (athletes_by_Year_NOC[x])[y] = (athletes_by_Year_NOC[x])[y] + [b]
            else:
                (athletes_by_Year_NOC[x])[y] = [b]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    x = {}
    b = []
    a = athletes_by_Year_NOC[year]
    for i in a:
        x[i] = [0,0,0] #เดี๋ยวค่อยเปลี่ยนเป็นtupleเพราะต้องแก้ไขจำนวนเหรียญก่อน
    for key_ in a:
        n = a[key_]
        for e in range(len(n)):
            s = (n[e])['Medal']
            if s == 'Gold':
                x[key_][0] = x[key_][0] + 1
            if s == 'Silver':
                x[key_][1] = x[key_][1] + 1
            if s == 'Bronze':
                x[key_][2] = x[key_][2] + 1
    for KEY in x:
        medals[KEY] = ((x[KEY][0]),(x[KEY][1]),(x[KEY][2])) #แปลงกลับเป็นtuple เพื่อป้องกันการเปลี่ยนแปลง
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    a = []
    TOP = []
    k = 0
    for key_noc in medals:
        a.append([(medals[key_noc])[0],(medals[key_noc])[1],(medals[key_noc])[2]]+[key_noc]) #aเก็บlist a = [[3,1,1,'FIN'],[20,4,19,'NOR']...]
    a.sort()
    for i in range(-1,-6,-1):
        TOP.append(a[i])
    n = -6
    while (a[-5])[0:3:1] == a[n][0:3:1]:
        TOP.append(a[n])
        n = n - 1
    TOPP = []
    for i in TOP:
        TOPP.append([i[3],i[0],i[1],i[2]]) #TOPPคือ [['USA', 10, 0, 0], ['GER', 2, 0, 0], ['FRA', 0, 5, 0], ['ESP', 0, 5, 0], ['NCA', 0, 1, 2], ['ITA', 0, 1, 2], ['EGY', 0, 1, 2]]
    if len(TOPP) == 5:
        for i in TOPP:
            topfive.append((i[0],i[1],i[2],i[3]))
    else:
        ttt = []
        l = 0
        i = 1
        while i + l <= len(TOPP)-1:
            if TOPP[i-1+l][1::1] != TOPP[i+l][1::1]:
                ttt.append(TOPP[i-1+l])
                i = i + 1
            else:
                ttt.append(TOPP[i+l])
                ttt.append(TOPP[i-1+l])
                u = i + l - 1
                l = l + 1
                i = i + 1
        if TOPP[-2][1::1] != TOPP[-1][1::1]:
              ttt.append(TOPP[-2])
        else:
              if not (TOPP[-1] in ttt):
                  ttt.insert(u,TOPP[-1])
              if not (TOPP[-2] in ttt):
                  ttt.insert(u,TOPP[-2])
        # ttt คือ [['USA', 10, 0, 0], ['GER', 2, 0, 0], ['ESP', 0, 5, 0], ['FRA', 0, 5, 0], ['ITA', 0, 1, 2], ['NCA', 0, 1, 2]]
        for i in ttt:
            topfive.append((i[0],i[1],i[2],i[3]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    b = []
    if start%2 == 0:
        n = start
    else:
        n = start+1 #ป้องกันการเริ่มต้นด้วยปีที่เป็นเลขคี่
    for i in range(n,end+1,2):
        if NOC in athletes_by_Year_NOC[str(i)]:
            if str(i) in athletes_by_Year_NOC: #ป้องกันการหยิบค่าที่ไม่มีอยู่ใน athletes_by_Year_NOC
                a = get_medals_by_team(athletes_by_Year_NOC,str(i)) #ใช้ฟังก์ชันข้อ2เพื่อหาจำนวนเหรียญรางวัลที่ได้มาเก็บในtuple
                b.append((str(i),a[NOC][0],a[NOC][1],a[NOC][2]))
    trend = b
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if 2000 <= int(year) <= 2016:
    if NOC in athletes_by_Year_NOC[year]:
      if year in athletes_by_Year_NOC:
        if get_medals_by_team(athletes_by_Year_NOC, year)[NOC] == (0, 0, 0):
          pass
        else:
          for i in range(0,len(athletes_by_Year_NOC[year][NOC]),1):
            if (((athletes_by_Year_NOC[year])[NOC])[i])['Medal'] == 'NA':
              pass
            else:
              sports.add((((athletes_by_Year_NOC[year])[NOC])[i])['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  n = len(NOCs)
  a = []
  for i in NOCs:
    a.append(get_sports(athletes_by_Year_NOC,i,year)) #a = [{'Weightlifting'}, {'Weightlifting', 'Taekwondo', 'Boxing'}]
  if len(a) == 1:
    sports = a[0]
  else:
    c = a[0].intersection(a[1])
    for i in range(1,len(a),1):
      c = c.intersection(a[i])
    sports = c
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530353121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 978, 'const': 1074, 'code+const': 2052}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  c = {}
  s = []
  k = {}
  for i in data[1::] :
      year,noc = i[9],i[7]
      if year not in athletes_by_Year_NOC :
          athletes_by_Year_NOC[year] = c
      if noc not in athletes_by_Year_NOC[year] :
          athletes_by_Year_NOC[year][noc] = s
      for e in range(len(data[0])) :
          k[data[0][e]] = i[e]
      athletes_by_Year_NOC[year][noc].append(k) 
      c = {}
      s = []
      k = {}    
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    m = athletes_by_Year_NOC[year]
    for i in m :
        g = 0
        s = 0
        b = 0
        for e in m[i] :
            if e['Medal'] == 'Gold' :
                g += 1
            if e['Medal'] == 'Silver' :
                s += 1
            if e['Medal'] == 'Bronze' :
                b += 1
        medals[i] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    m_sort = []
    for i in medals :
        m_sort.append((-medals[i][0],-medals[i][1],-medals[i][2],i))
    m_sort.sort()
    for i in range(5) :
        topfive.append((m_sort[i][-1],-m_sort[i][0],-m_sort[i][1],-m_sort[i][2]))
    a = 4
    while m_sort[a][:-1:] == m_sort[a+1][:-1:] :
        topfive.append((m_sort[a+1][-1],-m_sort[a+1][0],-m_sort[a+1][1],-m_sort[a+1][2]))
        a += 1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1) :
        if year%2 == 0  :
          if NOC in athletes_by_Year_NOC[str(year)] :
              medal = get_medals_by_team(athletes_by_Year_NOC, str(year))
              d = medal[NOC]
              trend.append((str(year),d[0],d[1],d[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if '2000' <= year <= '2016' and int(year)%2 == 0 :
      c = athletes_by_Year_NOC[year]
      if NOC in c :
        s = c[NOC]
        for i in range(len(s)) :
            if s[i]['Medal'] != 'NA' :
                sports.add(s[i]['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    s = []
    for i in NOCs :
      s.append(i)
    a = get_sports(athletes_by_Year_NOC, s[0], year)
    for i in NOCs :
        sports = a & (get_sports(athletes_by_Year_NOC, i, year))
        a = sports
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530363421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 968, 'const': 1248, 'code+const': 2216}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in data[1::]:
        ID, Name, Sex, Age, Height, Weight, Team, NOC, Games, Year, Season, City, Sport, Event, Medal = i
        P = person(i) #แปลงข้อมูลของบุคคล
        if Year in athletes_by_Year_NOC:#ในข้อมูลมีปีนี้แล้ว
            if NOC in athletes_by_Year_NOC[Year]:#ในข้อมูลมีประเทศนี้แล้ว
                athletes_by_Year_NOC[Year][NOC].append(P)
            else:
                athletes_by_Year_NOC[Year][NOC] = [P]
        else:
            athletes_by_Year_NOC[Year] = {NOC:[P]} 
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for country in athletes_by_Year_NOC[year]:
        med = [0,0,0]
        for person in athletes_by_Year_NOC[year][country]:#for person in people
            if person['Medal'] == 'Gold':
                med[0]+=1
            elif person['Medal'] == 'Silver':
                med[1]+=1
            elif person['Medal'] == 'Bronze':
                med[2]+=1
        medals[country] = tuple(med)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    countrys = []
    for i in medals:
        countrys.append([-medals[i][0],-medals[i][1],-medals[i][2],i])
    top = [(i[3],-i[0],-i[1],-i[2]) for i in sorted(countrys)]
    topfive = top[:5:]
    c = 5
    while topfive[4][1::]==top[c][1::]:
        topfive.append(top[c])
        c+=1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if start%2!=0:
        start+=1
    if end%2!=0:
        end-=1
    for year in range(start,end+1,2):
        x = [str(year)]
        med = (0,0,0)
        if NOC in get_medals_by_team(athletes_by_Year_NOC,str(year)):
            med = get_medals_by_team(athletes_by_Year_NOC,str(year))[NOC]
            for i in med:
                x.append(i)
            trend.append(tuple(x))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[str(year)]:
            for i in athletes_by_Year_NOC[str(year)][NOC]:
                if i['Medal'] != 'NA':
                    sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    k = []
    for i in NOCs:
        k.append(get_sports(athletes_by_Year_NOC, i, year))
    x = k[0]
    for j in range(len(k)):
        x = x & k[j]
    sports = set(x)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def person(x):
    head = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
    khon = {}
    for j in range(len(head)):
        khon[head[j]] = x[j]
    return khon

6530381721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0Time-out: 3s
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 914, 'const': 1269, 'code+const': 2183}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    info = ['ID','Name','Sex','Age','Height','Weight','Team','NOC','Games','Year','Season','City','Sport','Event','Medal']
    for i in range(1,len(data),1):
        pin = {}
        l = {}
        year = data[i][info.index('Year')]
        numnoc = data[i][info.index('NOC')]
        for e in range(len(info)):
            pin[info[e]] = data[i][e]
        l[numnoc] = [pin]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = l
        else:
            if numnoc in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][numnoc] += [pin]
            else:
                athletes_by_Year_NOC[year][numnoc] = [pin]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    x = athletes_by_Year_NOC[year]
    for e in x:
        score = [0,0,0]
        for u in range(len(x[e])):
            if x[e][u]['Medal'] == 'Gold':
                score[0] += 1
            elif x[e][u]['Medal'] == 'Silver':
                score[1] += 1
            elif x[e][u]['Medal'] == 'Bronze':
                score[2] += 1
        medals[e] = tuple(score)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    s = {}
    l = []
    for e in medals:
        s[e] = list(medals[e]) + [e]
        l.append(s[e])
        l.sort(reverse=True)
    n = 0
    while n != 5:
        if l[n][0:3] == l[n+1][0:3]:
            topfive.append(tuple([l[n][-1]] + l[n][:3]))
        else:
            topfive.append(tuple([l[n][-1]] + l[n][:3]))
            n += 1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if start%2 != 0:
        start += 1
    while start <= end:
        if NOC in get_medals_by_team(athletes_by_Year_NOC, str(start)):
            y = get_medals_by_team(athletes_by_Year_NOC, str(start))[NOC]
            trend.append(tuple([str(start)] + list(y)))
        start += 2
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    n = True
    for e in NOCs:
        x = get_sports(athletes_by_Year_NOC, e, year)
        if n == True:
            sports = sports | x
            n = False
        else:
            sports = sports & x      
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530408021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 816, 'const': 1100, 'code+const': 1916}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:]:
    year = e[9]
    noc = e[7]
    if year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[year]=dict()
    if noc not in athletes_by_Year_NOC[year] :
      athletes_by_Year_NOC[year][noc] = list()
    val = dict()
    for idx in range(15) :
      val[data[0][idx]] = e[idx]
    athletes_by_Year_NOC[year][noc].append(val)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  dic = athletes_by_Year_NOC[year]
  for noc in dic :
    gold = 0
    silver = 0 
    bronze = 0
    lists = dic[noc]
    for e in lists :
      if e["Medal"] == "Gold":
        gold += 1
      if e["Medal"] == "Silver":
        silver += 1
      if e["Medal"] == "Bronze" :
        bronze += 1
    medal = (gold,silver,bronze)
    medals[noc] = medal
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  lists = []
  for noc in medals :
    gold = medals[noc][0]
    silver = medals[noc][1]
    bronze = medals[noc][2]
    lists.append((noc,gold,silver,bronze))
  lists.sort(key = lambda x:(x[1],x[2],x[3]) , reverse = True)
  i = 0
  while(len(topfive) < 5):
    lastRank = lists[i][1:]
    while(lists[i][1:] == lastRank):
      topfive.append(lists[i])
      i+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if(year%2==0):
      medals = get_medals_by_team(athletes_by_Year_NOC, str(year))
      if(NOC in medals):
        medals = medals[NOC]
        trend.append((str(year),medals[0],medals[1],medals[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if(year in athletes_by_Year_NOC):
    if(NOC in athletes_by_Year_NOC[year]):
      for player in athletes_by_Year_NOC[year][NOC]:
        if(player['Medal']!='NA'):
          sports.add(player['Sport'])  
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NocSports = []
  for NOC in NOCs:
    NocSports.append(get_sports(athletes_by_Year_NOC, NOC, year))
  sports = NocSports[0]
  for sport in NocSports[1:]:
    sports = sports.intersection(sport)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532077321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[[('C', 1, 1, 1), ('E', 1, 1, 1)], [('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)]],
 [[('B', 1, 1, 1)], [('A', 1, 1, 0)], [('D', 1, 0, 1)], [('F', 1, 0, 0)], [('C', 0, 1, 0)]],
 [[('C', 9, 10, 9)], [('E', 9, 10, 8)], [('A', 9, 9, 9)], [('F', 9, 7, 9)],
  [('B', 9, 2, 1), ('D', 9, 2, 1)]],
 [[('Q', 3, 3, 3)],
  [('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1),
   ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)],
  [('P', 3, 2, 0), ('X', 3, 2, 0)]]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 846, 'const': 929, 'code+const': 1775}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    key = data[0] 
    y,n = key.index("Year"),key.index("NOC")
    for i in range(1,len(data)):
        Year,NOC = data[i][y],data[i][n]
        if Year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[Year] = dict()
        if NOC not in athletes_by_Year_NOC[Year]:
            athletes_by_Year_NOC[Year][NOC] = list()
        result = {}
        for j in range(len(key)):
            result[key[j]] = data[i][j]
        athletes_by_Year_NOC[Year][NOC].append((result))
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  key = ["Gold","Silver","Bronze"]
  for NOC in athletes_by_Year_NOC[year]:
    if not NOC in medals:
        medals[NOC] = [0,0,0]
    for person in athletes_by_Year_NOC[year][NOC]:
        if person["Medal"] != "NA":
            n = key.index(person["Medal"])
            medals[NOC][n] += 1
  for key in medals:
    medals[key] = tuple(medals[key])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  s = set([v for v in medals.values()])
  medal_rank = sorted(s)[::-1]
  for e in medal_rank[:5]:
      rank = []
      for NOC in medals:
          if e == medals[NOC]:
              rank.append([NOC,e[0],e[1],e[2]])
      rank = sorted(rank)
      r = [tuple(e) for e in rank]
      topfive.append(r)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if i%2 == 0 :
      if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)):
          medal = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
          trend.append((str(i),medal[0],medal[1],medal[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC.keys() and NOC in athletes_by_Year_NOC[year]:
    for person in athletes_by_Year_NOC[year][NOC]:
      if person["Medal"] != "NA":
        sports.add(person["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  a = [get_sports(athletes_by_Year_NOC, e , year) for e in NOCs]
  sports = set(a[0])
  for e in a:
    sports = sports & e
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532086021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1338, 'const': 1183, 'code+const': 2521}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = dict()
    name_list = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
    if data == []: return athletes_by_Year_NOC
    for i in data:
        k = {}
        all_noc = dict()
        if i[0] == 'ID':
          pass
        else:
          if i[9] not in athletes_by_Year_NOC:
              for u in range(15):
                  k[name_list[u]] = i[u]
              all_noc[i[7]] = [k]
              athletes_by_Year_NOC[i[9]] = all_noc
          else:
              all_noc = dict()
              if i[7] not in athletes_by_Year_NOC[i[9]]:
                  for u in range(15):
                      k[name_list[u]] = i[u]
                  athletes_by_Year_NOC[i[9]][i[7]] = [k]
              else:
                  for u in range(15):
                      k[name_list[u]] = i[u]
                  athletes_by_Year_NOC[i[9]][i[7]] += [k]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for i in athletes_by_Year_NOC[year]:
        gold = 0
        silver = 0
        bronze = 0
        for u in athletes_by_Year_NOC[year][i]:
            if u["Medal"].lower() == "gold":
                gold += 1
            elif  u["Medal"].lower() == "silver":
                silver += 1
            elif  u["Medal"].lower() == "bronze":
                bronze += 1
            else:
                pass
        medals[i] = (gold,silver,bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medals_list = []
    if medals == {} :return []
    for i in medals:
        a  = 0
        t = [-medals[i][0],-medals[i][1],-medals[i][2],i]
        medals_list.append(t)
    medals_list.sort()
    if len(medals_list) <= 5:
        for i in range(len(medals_list)):
            topfive.append((medals_list[i][3],-medals_list[i][0],-medals_list[i][1],-medals_list[i][2]))
        return topfive
    elif medals_list[4][:-1] == medals_list[5][:-1] :
        for i in range(5):
            topfive.append((medals_list[i][3],-medals_list[i][0],-medals_list[i][1],-medals_list[i][2]))
        for i in range(5,len(medals_list)):
            if medals_list[4][:-1] != medals_list[i][:-1]: break
            topfive.append((medals_list[i][3],-medals_list[i][0],-medals_list[i][1],-medals_list[i][2]))
        return topfive
    else:
        medals_list = medals_list[:5]
        for i in range(len(medals_list)):
            topfive.append((medals_list[i][3],-medals_list[i][0],-medals_list[i][1],-medals_list[i][2]))
        return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    started = start
    ended = end
    if started % 2 == 1:
        started = started + 1
    if ended % 2 == 1:
        ended = ended -1
    for i in range(started,ended+2,2):
        g = get_medals_by_team(athletes_by_Year_NOC, str(i))
        if NOC in g:
            g = g[NOC]
            trend.append((i,g[0],g[1],g[2]))
        else: pass
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC: return sports
    if NOC not in athletes_by_Year_NOC[year]: return sports
    d = athletes_by_Year_NOC[year][NOC]
    for i in range(len(d)):
        if d[i]["Medal"] != "NA":
            sports.add(d[i]["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    k = []
    if year not in athletes_by_Year_NOC: return sports
    for i in NOCs:
        k.append(get_sports(athletes_by_Year_NOC, i, year))
    if len(k) == 1: return sports()
    else:
        sports = sports.union(k[0])
        for i in range(1,len(k)):
            sports = sports.intersection(k[i])
        return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532087621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0NameError("name 'NOC' is not defined")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 990, 'const': 1023, 'code+const': 2013}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    data1 = data[1:len(data)]
    for a in data1:
        e = {}
        if not(a[9] in athletes_by_Year_NOC):
            athletes_by_Year_NOC[a[9]] = {}
        if not(a[7] in athletes_by_Year_NOC[a[9]]):
            athletes_by_Year_NOC[a[9]][a[7]] = []
        for i in range(len(data[1])):
            e[data[0][i]] = a[i]
        athletes_by_Year_NOC[a[9]][a[7]].append(e)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for e in athletes_by_Year_NOC[year]:
        gold = 0
        silver = 0
        bronze = 0
        for i in athletes_by_Year_NOC[year][e]:
            if i['Medal'] == 'Gold':
                gold+=1
            elif i['Medal'] == 'Silver':
                silver+=1
            elif i['Medal'] == 'Bronze':
                bronze+=1
            elif i["Medal"] == 'NA':
                pass
        medals[e] = (gold,silver,bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    a = []
    for N in medals:
        dict1 = (medals[NOC][0]*(-1),medals[NOC][1]*(-1),medals[NOC][2]*(-1),N)
        a.append(dict1)
    a = sorted(a)
    for e in a[0:5:]:
        dict2 = (e[3],e[0]*(-1),e[1]*(-1),e[2]*(-1))
        topfive.append(dict2)
    g = 5
    while g < len(a) and a[4][0:3:] == a[g][0:3:]:
        topfive.append((a[g][3],a[g][0]*(-1),a[g][1]*(-1),a[g][2]*(-1)))
        g = g+1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start, end+1):
        if y % 2 == 0:
            y = str(y)
            m = get_medals_by_team(athletes_by_Year_NOC,y)
            if NOC in m:
                medal = m[NOC]
                a = (y, medal[0], medal[1], medal[2])
                trend.append(a)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    sports1 = []
    if not((year in athletes_by_Year_NOC) and (NOC in athletes_by_Year_NOC[year])):
        return set()
    for x in athletes_by_Year_NOC[year][NOC]:
        if not(x['Medal']=='NA'):
            sports1.append(x['Sport'])
    sports = set(sports1)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sports1 = []
    for NOC in NOCs:
        a = get_sports(athletes_by_Year_NOC, NOC , year)
        sports1.append(a)
    sports = sports1[len(sports1)-1] 
    for e in sports1[0:len(sports1)-1:]:
        sports = sports & e
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532199221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1064, 'const': 1792, 'code+const': 2856}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1::]:
    if i[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[i[9]] = {i[7]:[sum_data(i)]}   
    else:
      if i[7] not in athletes_by_Year_NOC[i[9]]:
        athletes_by_Year_NOC[i[9]][i[7]] = [sum_data(i)]
      else:
        athletes_by_Year_NOC[i[9]][i[7]].append(sum_data(i))
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if int(year) in range(2000,2017,2):
    x = athletes_by_Year_NOC[year]
    for i in x.keys():
      g = 0 ; s = 0 ; b = 0
      for j in range(len(x[i])):
        if x[i][j]['Medal'] == 'Gold':
          g += 1
        elif x[i][j]['Medal'] == 'Silver':
          s += 1
        elif x[i][j]['Medal'] == 'Bronze':
          b += 1
      medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  x = sorted(medals.values())[::-1]
  m = sorted(medals.keys())
  for i in range(5):
    for j in m:
      if x[i] == medals[j]:
        name = j
        x1 = x[i][0] ; x2 = x[i][1] ; x3 = x[i][2]
        if (name, x1, x2, x3) not in topfive:
          topfive.append((name, x1, x2, x3))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  s = start ; e = end
  if start in range(2000,2017) and end in range(2000,2017):
    if s%2 != 0:
      s += 1
    if e%2 != 0:
      e -= 1
    for i in range(s,e+1):
      x = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if x != {} and NOC in x:
        go = x[NOC][0]
        si = x[NOC][1]
        br = x[NOC][2]
        trend.append((i, go, si, br))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if int(year) in range(2000,2017,2) and NOC in athletes_by_Year_NOC[year]:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal'] == 'Gold' or i['Medal'] == 'Silver' or i['Medal'] == 'Bronze':
        sports = sports.union({i['Sport']})
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = []
  for i in NOCs:
    a.append(i)
  for e in range(len(a)):
    if e == 0:
      sports = sports.union(get_sports(athletes_by_Year_NOC, a[e], year))
    else:
      sports = sports.intersection(get_sports(athletes_by_Year_NOC, a[e], year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def sum_data(data):
  x = {'ID':data[0], 'Name':data[1], 'Sex':data[2], 'Age':data[3], 'Height':data[4], 'Weight':data[5], 'Team':data[6], 'NOC':data[7],          'Games':data[8], 'Year':data[9], 'Season':data[10], 'City':data[11], 'Sport':data[12], 'Event':data[13], 'Medal':data[14]}
  return(x)

6530227821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.95
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 836, 'const': 1020, 'code+const': 1856}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data:
      y=i[9]
      n=i[7]
      x=changed(i,data[0])
      if y not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[y]={}
      if n not in athletes_by_Year_NOC[y]:
        athletes_by_Year_NOC[y][n]=[]
      athletes_by_Year_NOC[y][n].append(x)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  g=0
  b=0
  s=0
  for i in athletes_by_Year_NOC[year]:
    for j in athletes_by_Year_NOC[year][i]:
      if j["Medal"] == "Gold":
        g+=1
      if j["Medal"] == "Bronze":
        b+=1
      if j["Medal"] == "Silver":
        s+=1
    medals[athletes_by_Year_NOC[year][i][0]["NOC"]]=(g,s,b)
    g=0
    b=0
    s=0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  topfive = sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))
  result = []
  count = 0
  for country, medalcount in topfive:
      result.append((country, medalcount[0], medalcount[1], medalcount[2]))
      count += 1
      if count >= 5 and medalcount != topfive[4][1]:
            break
  topfive=result[0:len(result)-1]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[str(i)]:
        m = get_medals_by_team(athletes_by_Year_NOC, str(i))
        trend.append(tuple(([str(i)]+list(m[NOC]))))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  l=[]
  if year in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[year]:
        for i in athletes_by_Year_NOC[year][NOC]:
          if i['Medal']!= 'NA':
            l.append(i['Sport'])
  sports=set(l)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  lis=[]
  for i in NOCs:
    lis.append(get_sports(athletes_by_Year_NOC,i,year))
  if len(lis)==0:
    return sports
  sports=lis[0]
  for i in lis:
    sports=sports & i  
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def changed(lis,mom):
  dic={}
  for i in range(len(mom)):
    dic[mom[i]]=lis[i]
  return dic

6432102221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.95
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 998, 'const': 980, 'code+const': 1978}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  info = data[0]
  a,b = info.pop(9),info.pop(7)
  for detail in data[1::]:
    year = detail.pop(9)
    noc = detail.pop(7)
    if year not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][noc] = []
    add = {}
    for i in range(len(info)):
      add[info[i]] = detail[i]
    athletes_by_Year_NOC[year][noc].append(add)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc in athletes_by_Year_NOC[year]:
    Gold,Silver,Bronze = 0,0,0
    for detail in athletes_by_Year_NOC[year][noc]:
      if detail['Medal'] == 'Gold' : Gold += 1
      elif detail['Medal'] == 'Silver' : Silver += 1
      elif detail['Medal'] == 'Bronze' : Bronze += 1
    medals[noc] = (Gold,Silver,Bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  info = {}
  top = []
  for noc in medals:
    nocs = (medals[noc],noc)
    info[nocs] = noc
  Sort_info = sorted(info,reverse=True)
  n = 0
  for i in range(len(Sort_info)-1):
    if Sort_info[i][0] != Sort_info[i+1][0]:
      top.append(Sort_info[i])
      n += 1
      if n >= 5 : break
    elif Sort_info[i][0] == Sort_info[i+1][0]:
      top.append(Sort_info[i])
      n += 1
  final = {}
  for i in range(len(top)):
    if top[i][0] not in final: final[top[i][0]] = [top[i][1]]
    else: final[top[i][0]] += [top[i][1]]
  score = sorted(final,reverse=True)
  for sc in score:
    final[sc].sort()
    for noc in final[sc]: topfive.append((noc,sc[0],sc[1],sc[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    y = str(i)
    if y in athletes_by_Year_NOC:
        medals = get_medals_by_team(athletes_by_Year_NOC, y)
        if NOC in medals:
            medals_noc = medals[NOC]
            trend.append((y,medals_noc[0],medals_noc[1],medals_noc[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    medals = get_medals_by_team(athletes_by_Year_NOC, year)
    if NOC in medals:
        for detail in athletes_by_Year_NOC[year][NOC]:
            if detail['Medal'] != 'NA': sports.add(detail['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  all = []
  for noc in NOCs:
    all.append(get_sports(athletes_by_Year_NOC, noc, year))
  for i in range(len(all)-1):
    sports = all[i] & all[i+1]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530221021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1074, 'const': 1036, 'code+const': 2110}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    d = {}
    for i in range(len(data)):
        if data[i][9] not in d:
           d[data[i][9]]  = [CD(data[i])]
        elif data[i][9] in  d:
           d[data[i][9]] += [CD(data[i])]
    for x in d :
         d[x] = getNOC(d[x])
    return d
#======================================
def get_medals_by_team(abyn, year):
    g={}
    if year in abyn:
      for x in abyn[year]:
          G,B,S = 0,0,0
          for i in range(len(abyn[year][x])):
              if abyn[year][x][i]['Medal'] == 'Gold':G += 1
              elif abyn[year][x][i]['Medal'] == 'Silver':S += 1
              elif abyn[year][x][i]['Medal'] == 'Bronze':B += 1
          g[x] = (G,S,B,)
    return g
#======================================
def get_top_five(m):
    mlist = []
    for x in m:
        mlist.append([m[x],x])
    mlist.sort(reverse=True)
    five = {}
    i = 0
    for z in mlist:
       if i >= 5:           
           if z[0] not in five:
            break
       if z[0] not in five: 
        five[z[0]] = [z[1]]
        i += 1
       else:
           five[z[0]] += [z[1]]
           i += 1
    for x in five:
        five[x] = sorted(five[x])
    re = []
    for y in five:
        for I in range(len(five[y])):
            re += [(five[y][I],)+y]    
    return re
#======================================
def get_medals_trend(abyn, NOC, start, end):
    re = []
    a = []
    for i in range(start,end+1):
        if str(i) in abyn:
           m = (get_medals_by_team(abyn,str(i))) 
           re += [i] 
           if  NOC in m:
            a += [(str(i),)+m[NOC]] 
    return a
#======================================
def get_sports(abyn, NOC, year):
    if year in abyn:
        if NOC in abyn[year]:
         t = abyn[year][NOC]
        else:return set()
    else:return set() 
    re = set()
    for i in range(len(t)):
        if t[i]['Medal'] != 'NA':
            re.add(t[i]['Sport'])
    return re
#======================================
def get_common_sports(abyn, NOCs, year):
  for i in NOCs:
    a = get_sports(abyn, i, year)
    for i in NOCs:
        b = get_sports(abyn, i, year)
        a = a & b
    return a
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def CD(d):#1.
    D = {}
    a = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
    for i in range(len(a)):
        D[a[i]] = d[i]
    return D
def getNOC(d): #1.
     q = {}
     for i in range(len(d)):
        if d[i]['NOC'] not in q:
            q[d[i]['NOC']] = [d[i]]
        else:
            q[d[i]['NOC']] += [d[i]]
     return q

6530277121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 878, 'const': 1232, 'code+const': 2110}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    lst  = []
    for elem in data: lst.append(covert_list_to_dict(elem))
    athletes_by_Year_NOC  = (combine(lst))
    for key, value in athletes_by_Year_NOC.items():
        athletes_by_Year_NOC [key] = combine(value)
    return athletes_by_Year_NOC 
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC.keys(): 
        return None
    for k,v in athletes_by_Year_NOC[year].items():
        scorce = [0,0,0]
        for elem in v:
            if elem['Medal'] =='Gold': scorce[0]+=1
            elif elem['Medal'] =='Silver': scorce[1]+=1
            elif elem['Medal'] =='Bronze': scorce[2]+=1
        medals[k]=(scorce[0],scorce[1],scorce[2])
    return medals
#======================================
def get_top_five(medals):    
    topfive = sorted(sorted(medals.items(), key = lambda x : x[0]), key = lambda x : x[1], reverse = True)
    k = topfive[0:5]
    for elem in topfive[5:]:
        if elem[1]== k[-1][1]: 
            k.append(elem)
    topfive = [(x,*y) for x,y in k]        
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(int(start),int(end)+1):
    if athletes_by_Year_NOC.get(str(i)) != None:
        year = str(i)
        if get_medals_by_team(athletes_by_Year_NOC, year) != None:
            if get_medals_by_team(athletes_by_Year_NOC, year).get(NOC) !=None:
                medel = get_medals_by_team(athletes_by_Year_NOC, year).get(NOC)
                trend.append((year,*medel))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if athletes_by_Year_NOC.get(year) != None:
        k = athletes_by_Year_NOC.get(year).get(NOC)
        if k != None:
            for elem in k:
                if elem.get('Medal')!= 'NA':
                    sports.add(elem.get('Sport'))
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    nation = (NOCs).pop()
    sports = get_sports(athletes_by_Year_NOC, nation, year)
    for elem in NOCs:
        x = get_sports(athletes_by_Year_NOC, elem, year)
        sports.intersection_update(x)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def covert_list_to_dict(x):
    cata = ['ID','Name','Sex','Age','Height','Weight','Team','NOC','Games','Year','Season','City','Sport','Event','Medal']
    selected = x[:]
    n= x[7]
    y= x[9]
    return {y:{n:dict(zip(cata,selected))}}
def combine(l_dict):
    combined = {}  
    for diction in l_dict:
        for key, value in diction.items():
            combined.setdefault(key, []).append(value)
    return combined

6532075021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1006, 'const': 1588, 'code+const': 2594}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for row in data:
        year = row[9][:4] 
        noc = row[7] 
        athlete = {
            'ID': row[0],
            'Name': row[1],
            'Sex': row[2],
            'Age': row[3],
            'Height': row[4],
            'Weight': row[5],
            'Team': row[6],
            'NOC': noc,
            'Games': row[8],
            'Year': year,
            'Season': row[10],
            'City': row[11],
            'Sport': row[12],
            'Event': row[13],
            'Medal': row[14]
        }
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(athlete)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for noc in athletes_by_Year_NOC[year]:
        gold = 0
        silver = 0
        bronze = 0
        for athlete in athletes_by_Year_NOC[year][noc]:
            if athlete['Medal'] == 'Gold':
                gold += 1
            elif athlete['Medal'] == 'Silver':
                silver += 1
            elif athlete['Medal'] == 'Bronze':
                bronze += 1
        medals[noc] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    sorted_medals = sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))
    for i in range(min(5, len(sorted_medals))): 
        topfive.append((sorted_medals[i][0], sorted_medals[i][1][0], sorted_medals[i][1][1], sorted_medals[i][1][2]))
    for i in range(5, len(sorted_medals)):
        if sorted_medals[i][1][0] == sorted_medals[4][1][0] and sorted_medals[i][1][1] == sorted_medals[4][1][1] and sorted_medals[i][1][2] == sorted_medals[4][1][2]:
            topfive.append((sorted_medals[i][0], sorted_medals[i][1][0], sorted_medals[i][1][1], sorted_medals[i][1][2]))
        else:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        if str(year) in athletes_by_Year_NOC:
            medals = get_medals_by_team(athletes_by_Year_NOC, str(year))
            if NOC in medals:
                trend.append((str(year), medals[NOC][0], medals[NOC][1], medals[NOC][2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for athlete in athletes_by_Year_NOC[year][NOC]:
            if athlete['Medal'] == 'Gold' or athlete['Medal'] == 'Silver' or athlete['Medal'] == 'Bronze':
                sports.add(athlete['Sport'])
    sorted_sports = sorted(list(sports))
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sport_common = [get_sports(athletes_by_Year_NOC, NOC, year) for NOC in NOCs]
    sports = set.intersection(*sport_common)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532088221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
convert_to_dict_020.75
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')],
  ['Year', 'NOC', ('Age', 'Age'), ('City', 'City'), ('Event', 'Event'), ('Games', 'Games'),
   ('Height', 'Height'), ('ID', 'ID'), ('Medal', 'Medal'), ('NOC', 'NOC'), ('Name', 'Name'),
   ('Season', 'Season'), ('Sex', 'Sex'), ('Sport', 'Sport'), ('Team', 'Team'), ('Weight', 'Weight'),
   ('Year', 'Year')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1004, 'const': 1013, 'code+const': 2017}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for person in data:
    year = person[9]
    noc = person[7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = dict()
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    personDict = dict()
    for i in range(len(data[0])):
      personDict[data[0][i]]=person[i]
    athletes_by_Year_NOC[year][noc] += [personDict]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc in athletes_by_Year_NOC[year]:
    x=[0]*3
    for person in athletes_by_Year_NOC[year][noc]:
      medal=person['Medal']
      if medal=='Bronze':
        x[2]+=1
      elif medal=='Silver':
        x[1]+=1
      elif medal=='Gold':
        x[0]+=1
    medals[noc]=(x[0],x[1],x[2])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all=[]
  for noc in medals:
    all.append([-medals[noc][0],-medals[noc][1],-medals[noc][2],noc])
  all.sort()
  for i in range(5):
    topfive.append( (all[i][3],-all[i][0],-all[i][1],-all[i][2]) )
  for i in range(5,len(all)-1):
    if all[i-1][0] != all[i][0]:
      break
    elif all[i-1][0] == all[i][0]:
      if all[i-1][1] != all[i][1]:
        break
      else:
        if all[i-1][2] != all[i][2]:
          break
        else:
          topfive.append( (all[i][3],-all[i][0],-all[i][1],-all[i][2]) )
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        x=get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC]
        trend.append( (str(i),x[0],x[1],x[2]) )
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for modle in athletes_by_Year_NOC[year][NOC]:
        if modle['Medal'] in ['Bronze','Silver','Gold']:
          sports.add(modle['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  L=[]
  for noc in NOCs:
    L.append(get_sports(athletes_by_Year_NOC,noc, year))
  if len(L) not in [0,1]:
    sports=(L[0])
    for i in range(1,len(L)):
      x=L[i]
      sports &= x
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530245021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.76
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0), ('A', 1, 1, 0),
  ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('B', 9, 2, 1),
  ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('AK', 3, 2, 1),
  ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1), ('M', 3, 2, 1), ('N', 3, 2, 1),
  ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1300, 'const': 1604, 'code+const': 2904}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  if len(data) == 0:
    return athletes_by_Year_NOC
  else:
    for i in range(1,len(data)):
      athletes_by_Year_NOC.update({data[i][9]:{}})
    for j in range(1,len(data)):
      athletes_by_Year_NOC[data[j][9]][data[j][7]] = []
    for k in range(1,len(data)):
      year = data[k][9]
      NOC = data[k][7]
      ath = {}
      for z in range(len(data[0])):
        ath.update({data[0][z]:data[k][z]})
      athletes_by_Year_NOC[year][NOC].append(ath)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if len(athletes_by_Year_NOC) == 0:
    return medals
  else:
    for c in athletes_by_Year_NOC[year]:
      m = [0,0,0]
      for e in athletes_by_Year_NOC[year][c]:
        if e['Medal'] == 'Gold':
          m[0] += 1
        elif e['Medal'] == 'Silver':
          m[1] += 1
        elif e['Medal'] == 'Bronze':
          m[2] += 1
        else:
          pass
      medals[c] = tuple(m)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  r = {}
  if len(medals) == 0:
      return topfive
  else:
    for k,v in medals.items():
      if v not in r:
        r[v] = set()
      r[v].add(k)
    x = sorted(r)
    x2 = x[::-1]
    for c in x2:
      for e in sorted(r[c]):
        if len(topfive) == 5:
          break
        else:
          t = (e,) + c
          topfive.append(t)
    for a in x2:
      if a == topfive[-1][1:]:
        for b in sorted(r[a]):
          t = (b,) + a
          topfive.append(t)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if len(athletes_by_Year_NOC) == 0:
    return trend
  else:
    for i in range(start, end+1):
      if str(i) in athletes_by_Year_NOC.keys():
        t = [i, 0, 0, 0]
        if NOC in athletes_by_Year_NOC[str(i)].keys():
          for e in athletes_by_Year_NOC[str(i)][NOC]:
            if e['Medal'] == 'Gold':
              t[1] += 1
            elif e['Medal'] == 'Silver':
              t[2] += 1
            elif e['Medal'] == 'Bronze':
              t[3] += 1
            else:
              pass
          trend.append(tuple(t))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if len(athletes_by_Year_NOC) == 0:
    return sports
  else:
    if year in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[year].keys():
        for e in athletes_by_Year_NOC[year][NOC]:
          if (e['Medal'] == 'Gold') or (e['Medal'] == 'Silver') or (e['Medal'] == 'Bronze'):
            sports.add(e['Sport'])  
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOC = list(NOCs)
  if len(athletes_by_Year_NOC) == 0:
    return sports
  else:
    if year in athletes_by_Year_NOC.keys():
      for i in range(len(NOC)):
        if (i==0):
          if NOC[i] in athletes_by_Year_NOC[year].keys():
            for e in athletes_by_Year_NOC[year][NOC[i]]:
              if (e['Medal'] == 'Gold') or (e['Medal'] == 'Silver') or (e['Medal'] == 'Bronze'):
                sports.add(e['Sport'])
        else:
          l = set()                  
          if NOC[i] in athletes_by_Year_NOC[year].keys():
            for e in athletes_by_Year_NOC[year][NOC[i]]:
              if (e['Medal'] == 'Gold') or (e['Medal'] == 'Silver') or (e['Medal'] == 'Bronze'):
                l.add(e['Sport'])
          sports = sports.intersection(l)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530307321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.0
[[('2004', (1, 5, 12))],
 [('2000', (4, 5, 8)), ('2004', (5, 6, 7)), ('2006', (6, 3, 9)), ('2008', (0, 7, 9))],
 [('2002', (3, 7, 7)), ('2006', (5, 7, 7)), ('2008', (4, 3, 12))]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 892, 'const': 841, 'code+const': 1733}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  ref = data[0]
  info = {}
  for i in range(1,len(data)) :
    ID,Name,Sex,Age,Height,Weight,Team,NOC,Games,Year,Season,City,Sport,Event,Medal = data[i]
    if Year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[Year] = {}
    if NOC not in athletes_by_Year_NOC[Year] :
      athletes_by_Year_NOC[Year][NOC] = []
    for j in range(len(ref)) :
      if ref[j] == "Year" or ref[j] == "NOC" :
        continue
      info[ref[j]] = data[i][j]
    athletes_by_Year_NOC[Year][NOC].append(info)
    info = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  Gold, Silver, Bronze = 0, 0, 0
  for NOC in athletes_by_Year_NOC[year] :
    for i in range(len(athletes_by_Year_NOC[year][NOC])) :
      if athletes_by_Year_NOC[year][NOC][i]["Medal"] == "Gold" :
        Gold += 1
      elif athletes_by_Year_NOC[year][NOC][i]["Medal"] == "Silver" :
        Silver += 1
      elif athletes_by_Year_NOC[year][NOC][i]["Medal"] == "Bronze" :
        Bronze += 1
    medals[NOC] = (Gold, Silver, Bronze)
    Gold, Silver, Bronze = 0, 0 ,0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  already_in_topfive = []
  for value in sorted(medals.values())[::-1] :
    Gold, Silver, Bronze = value
    if len(topfive) >= 5 :
        break
    for key in sorted(medals) :
      if key in already_in_topfive :
        continue
      if medals[key] == value :
        topfive.append((key, Gold, Silver, Bronze))
        already_in_topfive.append(key)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in sorted(athletes_by_Year_NOC) :
    if start <= int(year) and end >= int(year) :
      medals = get_medals_by_team(athletes_by_Year_NOC, year)
      if NOC not in medals :
        continue
      trend.append((year, medals[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC :
    return set()
  medals = get_medals_by_team(athletes_by_Year_NOC, year)
  if NOC not in medals :
    return set()
  if sum(medals[NOC]) == 0 :
    return set()
  for i in range(len(athletes_by_Year_NOC[year][NOC])) :
    if athletes_by_Year_NOC[year][NOC][i]["Medal"] != "NA" :
      sports.add(athletes_by_Year_NOC[year][NOC][i]["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  country_sport = {}
  for country in NOCs :
    country_sport[country] = get_sports(athletes_by_Year_NOC, country, year)
  sports = country_sport[sorted(NOCs)[0]]
  for sp in country_sport.values() :
    sports = sports.intersection(sp)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530422821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NameOC', 'BUSA'), ('Nocame', 'USAB'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NameOC', 'CTHA'), ('Nocame', 'THAC'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NameOC', 'BUSA'), ('Nocame', 'USAB'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NameOC', 'USA'), ('Nocame', 'USA'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NameOC', 'USA'), ('Nocame', 'USA'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[[('C', 1, 1, 1]), [('E', 1, 1, 1]), [('A', 1, 1, 0]), [('B', 1, 1, 0]), [('D', 1, 1, 0])],
 [[('B', 1, 1, 1]), [('A', 1, 1, 0]), [('D', 1, 0, 1]), [('F', 1, 0, 0]), [('C', 0, 1, 0])],
 [[('C', 9, 10, 9]), [('E', 9, 10, 8]), [('A', 9, 9, 9]), [('F', 9, 7, 9]), [('B', 9, 2, 1]), ('D', 9, 2, 1)],
 [[('Q', 3, 3, 3]), [('A', 3, 2, 1]), [('B', 3, 2, 1]), [('F', 3, 2, 1]), [('J', 3, 2, 1]), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 980, 'const': 1384, 'code+const': 2364}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  y ={}
  for i in range(1,len(data)):
    if data[i][9] not in y:
      y[data[i][9]]= []
    y[data[i][9]].append(data[i])
  for e in y:
    noc={}
    for i in range(len(y[e])):
      if y[e][i][7] not in noc:
        noc[y[e][i][7]] = []
      noc[y[e][i][7]].append({"ID":y[e][i][0],"Name":y[e][i][1],"Sex":y[e][i][2],"Age":y[e][i][3],"Height":y[e][i][4],"Weight":y[e][i][5],"Team":y[e][i][6],"Noc":y[e][i][7],"Games":y[e][i][8],"Year":y[e][i][9],"Season":y[e][i][10],"City":y[e][i][11],"Sport":y[e][i][12],"Event":y[e][i][13],"Medal":y[e][i][14]})
    athletes_by_Year_NOC[e]=noc
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc,data_a in list(athletes_by_Year_NOC[year].items()):
    gold_d = 0
    silver_r =0
    bronze_e =0 
    for e in data_a:
      if e["Medal"] == "Gold":
        gold_d += 1
      if e["Medal"] =="Silver":
        silver_r+=1
      if e["Medal"] =="Bronze":
        bronze_e +=1
    medals[noc] = (gold_d,silver_r,bronze_e)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  ranking=[]
  for nation,medal in medals.items():
    ranking.append([-medal[0],-medal[1],-medal[2],nation])
  ranking.sort()
  for i in ranking[:5]:
    topfive.append([i[3],-i[0],-i[1],-i[2]])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(year)]:
        nationMedals=get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
        trend.append((str(year),nationMedals[0],nationMedals[1],nationMedals[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      athleteInfo=athletes_by_Year_NOC[year][NOC]
      for athlete in athleteInfo:
        if athlete['Medal']!='NA':
          sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCsList=list(NOCs)
  sportMedal1=get_sports(athletes_by_Year_NOC, NOCsList[0], year)
  sportMedal2=get_sports(athletes_by_Year_NOC, NOCsList[1], year)
  sports=sportMedal1.intersection(sportMedal2)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532020521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1548, 'const': 1636, 'code+const': 3184}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  list_head_of_table = [data[i][e] for i in range(1) for e in range(len(data[i]))]
  tuple_head_of_table = tuple(list_head_of_table)
  before_athletes_by_Year_NOC = dict.fromkeys(tuple_head_of_table)
  year_not_same = []
  for i in range(1,len(data)):
    if data[i][9] not in year_not_same:
      year_not_same.append(data[i][9])
  counter_year = [0]*len(year_not_same)
  tuple_year_not_same = tuple(year_not_same)
  dict_year_not_same = dict.fromkeys(tuple_year_not_same)
  for i in range(1, len(data)):
    year = data[i][9]
    NOC = data[i][7]
    for i2 in range(len(data[i])):
      before_athletes_by_Year_NOC[str(list_head_of_table[i2])] = data[i][i2]
      a = before_athletes_by_Year_NOC
    if counter_year[year_not_same.index(year)] == 0:
     dict_year_not_same[year] = {NOC:[]}
     dict_year_not_same[year][NOC].append(dict(a))
     counter_year[year_not_same.index(year)] += 1
    else:
      if not NOC in dict_year_not_same[year]:
        dict_year_not_same[year][NOC] = []
      dict_year_not_same[year][NOC].append(dict(a))
  return dict_year_not_same
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  bronze = 0
  silver = 0
  gold = 0
  for i in athletes_by_Year_NOC[year]:
    bronze = 0
    silver = 0
    gold = 0
    for i2 in athletes_by_Year_NOC[year][i]:
      if i2["Medal"] == "Gold":
        gold += 1
      elif i2["Medal"] == "Silver":
        silver += 1
      elif i2["Medal"] == "Bronze":
        bronze += 1
    medals[i] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  list_all = []
  for i in medals:
    a = (i,)
    b = (medals[i][0],)
    b+= medals[i][1],medals[i][2],
    a+= medals[i][0],medals[i][1],medals[i][2],
    list_all.append(a)
  new_sort = sorted(list_all, key=lambda medal: (-medal[1], -medal[2], -medal[3] ,medal[0]))
  for i in range(len(new_sort)-1):
    if i != 4:    
        topfive.append(new_sort[i])
    else:
      if new_sort[i][1] == new_sort[i+1][1] and new_sort[i][2] == new_sort[i+1][2] and new_sort[i][3] == new_sort[i+1][3]:
        topfive.append(new_sort[i])
        topfive.append(new_sort[i+1])
        topfive.append(new_sort[i+2])
        break
      else:
        topfive.append(new_sort[i])
        break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  list_of_year_olympic = [i for i in athletes_by_Year_NOC if int(i) >= start and int(i) <= end]
  list_of_year_olympic.sort()
  for i in range(len(list_of_year_olympic)):
    bronze = 0
    silver = 0
    gold = 0
    if NOC in athletes_by_Year_NOC[list_of_year_olympic[i]]:
      for i2 in athletes_by_Year_NOC[list_of_year_olympic[i]][NOC]:
        if i2["Medal"] == "Gold":
          gold += 1
        elif i2["Medal"] == "Silver":
          silver += 1
        elif i2["Medal"] == "Bronze":
          bronze += 1
        else:
          pass
      tuple_of_year_summary = (list_of_year_olympic[i], gold,silver,bronze)
      trend.append(tuple_of_year_summary)
    else:
      pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for i2 in athletes_by_Year_NOC[year][NOC]:
      if i2["Medal"] != "NA":
        if not i2["Sport"] in sports:
          sports.add(i2["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_a = []
  for NOC in NOCs:
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
      for i2 in athletes_by_Year_NOC[year][NOC]:
        if i2["Medal"] != "NA":
          a = (NOC , i2["Sport"])
          list_a.append(a)
  new_sort = sorted(list_a, key=lambda sport:sport[1]  , reverse=True)
  for i in range(len(new_sort)-1):
    if len(NOCs) == 2:
      if new_sort[i][1] == new_sort[i+1][1] and new_sort[i][0] != new_sort[i+1][0]:
        sports.add(new_sort[i][1])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def isEqualinlist(list_val):
  return len(set(list_val)) == 1

6532200121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.61
[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0)]
(1, 1, 1)
[('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('X', 0, 0, 1), ('W', 0, 0, 1), ('Y', 0, 0, 1), ('Z', 0, 0, 1)]
(0, 0, 1)
[('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1), ('Q', 9, 2, 0), ('P', 1, 9, 99)]
(1, 9, 99)
[('Q', 3, 3, 3), ('F', 3, 2, 1), ('K', 3, 2, 1), ('J', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('B', 3, 2, 1), ('A', 3, 2, 1), ('M', 3, 2, 1), ('N', 3, 2, 1), ('X', 3, 2, 0), ('P', 3, 2, 0)]
(3, 2, 0)
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('DA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('W', 0, 0, 1), ('X', 0, 0, 1),
  ('YC', 0, 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('FA', 3, 2, 1), ('KB', 3, 2, 1), ('JF', 3, 2, 1), ('AJ', 3, 2, 1), ('BK', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('X', 3, 2, 0), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.34KeyError('2001')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1356, 'const': 1273, 'code+const': 2629}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for k in range (2000, 2017):
    athletes_by_Year_NOC[str(k)]={}
    for i in range(len(data)):
      if data[i][9] == str(k):
        if data[i][7] not in(athletes_by_Year_NOC[str(k)]):
            a = intodict(data,i)
            athletes_by_Year_NOC[str(k)][data[i][7]]=[a]
        else:
            b = intodict(data,i)
            athletes_by_Year_NOC[str(k)][data[i][7]].append(b)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in (athletes_by_Year_NOC[year]):
      G=0
      S=0
      B=0
      for j in range(len(athletes_by_Year_NOC[year][i])):
       if athletes_by_Year_NOC[year][i][j]["Medal"]== "Bronze":
          B+=1
       elif athletes_by_Year_NOC[year][i][j]["Medal"]== "Silver":
           S+=1
       elif athletes_by_Year_NOC[year][i][j]["Medal"]== "Gold":
           G+=1
       medals[i]=(G,S,B)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a=[]
  d=[]
  for key in medals:
      b=medals[key]
      a.append((key,int(b[0]),int(b[1]),int(b[2])))
  a.sort(key=lambda x:(x[1],x[2],x[3],),reverse=True)
  print(a)
  print(b)
  for i in range(len(a)-1):
      if len(topfive)<4:
          if a[i][1]>a[i+1][1]:
              topfive.append(a[i])
          elif a[i][1]==a[i+1][1]:
              if a[i][2] == a[i+1][2]:
                  if a[i][3] >= a[i+1][3]:
                    topfive.append(a[i])
              elif a[i][2]> a[i+1][2]:
                  topfive.append(a[i])
      else:
         if a[i][1] == a[i+1][1] and a[i][2] == a[i+1][2] and a[i][3]==a[i+1][3]:
           d.append(a[i])
         elif a[i-1][1] == a[i][1] and a[i-1][2] == a[i][2] and a[i-1][3]==a[i][3]:
             d.append(a[i])
  d.sort(key = lambda x:x[0])
  for k in d:
             topfive.append(k)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
      a = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in a:
        trend.append((str(i),a[NOC][0],a[NOC][1],a[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  med =["Bronze","Silver","Gold"]
  if year in athletes_by_Year_NOC:
   if NOC in athletes_by_Year_NOC[year]:
    for i in athletes_by_Year_NOC[year][NOC]:
        if  i["Medal"]in med:
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s=[]
  for i in (NOCs):
   N = get_sports(athletes_by_Year_NOC,i , year)
   s.append(N)
  d=s[0]
  for k in range(1,len(s)):
      d=d&s[k]
  for e in(d):
      sports.add(e)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def intodict(data,n):
    dat={}
    for i in range(15):
        dat[data[0][i]]=data[n][i]
    return dat

6230146321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1118, 'const': 1000, 'code+const': 2118}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    nestd = {}
    year = data[i][9]
    NOC  = data[i][7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    for j in range(len(data[i])):
      nestd[data[0][j]] = data[i][j]
    athletes_by_Year_NOC[year][NOC].append(nestd)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  k=[]
  if year in athletes_by_Year_NOC:
    data = athletes_by_Year_NOC[year]
  else:
    return medals
  for a in data.keys():
    k.append(str(a))
  for a in k:
    data_NOC = data[a]
    num_gold = 0
    num_silver = 0
    num_bronze = 0
    for i in range(len(data_NOC)):
      med = data_NOC[i]["Medal"]
      if med == "Gold":
        num_gold += 1
      elif med == "Silver":
        num_silver += 1
      elif med == "Bronze": 
        num_bronze += 1
    medals[a] = (num_gold, num_silver, num_bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  k=[]
  temp = []
  j = 0
  for a in medals.keys():
    k.append(a)
  medal = []
  for a in k:
    li = list(medals[a])
    li.append(a)
    medal.append(li)
  medal.sort(reverse=True)
  medal.append([-1,-1,-1,"A"])
  for i in range(len(medal)):
    if medal[i][:3] == medal[i+1][:3]:
      a = convert(medal[i][-1:]+medal[i][:3])
      temp.append(a)
    else:
      if len(temp)>0:
        j += len(temp)
        a = convert(medal[i][-1:]+medal[i][:3])
        temp.append(a)
        temp.sort()
        topfive += temp
        temp = []
      else:
        j += 1 
        a = convert(medal[i][-1:]+medal[i][:3])
        topfive.append(a)
      if j >= 5:
        break
    zz=[]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  k = []
  for a in athletes_by_Year_NOC.keys():
    if a>=str(start):
      if a<= str(end):
        k.append(str(a))
  k.sort()
  for year in k:
    medals_by_team = get_medals_by_team(athletes_by_Year_NOC, year) 
    if NOC in medals_by_team:
      medal = medals_by_team[NOC]
      trend.append((year, )+medal)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    noc_ath = athletes_by_Year_NOC[year]
  else:
    return sports
  if NOC in noc_ath:
    a = noc_ath[NOC]
    for i in range(len(a)):
      if a[i]["Medal"] != "NA":
        sports.add(a[i]["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  n=0
  for noc in NOCs:
    if n==0:
      sports = get_sports(athletes_by_Year_NOC,noc, year)
      n+=1
    elif n!=0:
      a = get_sports(athletes_by_Year_NOC,noc, year)
      sports = sports.intersection(a)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def convert(list):
 return tuple(list)

6231101221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[[('C', 1, 1, 1]), [('E', 1, 1, 1]), [('A', 1, 1, 0]), [('B', 1, 1, 0]), [('D', 1, 1, 0])],
 [[('B', 1, 1, 1]), [('A', 1, 1, 0]), [('D', 1, 0, 1]), [('F', 1, 0, 0]), [('C', 0, 1, 0])],
 [[('C', 9, 10, 9]), [('E', 9, 10, 8]), [('A', 9, 9, 9]), [('F', 9, 7, 9]), [('B', 9, 2, 1]), [('D', 9, 2, 1])],
 [[('Q', 3, 3, 3]), [('A', 3, 2, 1]), [('B', 3, 2, 1]), [('F', 3, 2, 1]), [('J', 3, 2, 1]), [('K', 3, 2, 1]),
  [('M', 3, 2, 1]), [('N', 3, 2, 1]), [('S', 3, 2, 1]), [('Z', 3, 2, 1])]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1106, 'const': 984, 'code+const': 2090}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    p_dict = {}
    year = data[i][9]
    noc = data[i][7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    for j in range(len(data[i])):
      p_dict[data[0][j]] = data[i][j]
    athletes_by_Year_NOC[year][noc].append(p_dict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    data = athletes_by_Year_NOC[year]
  else:
    return medals
  # (Gold, Silver, Bronze, NA)
  medal = 'Medal'
  gold = 'Gold'
  silver = 'Silver'
  bronze = 'Bronze'
  keys = [str(e) for e in data.keys()]
  for e in keys:
    data_by_noc = data[e]
    n_gold = 0
    n_silver = 0
    n_bronze = 0
    for i in range(len(data_by_noc)):
      m = data_by_noc[i][medal]
      if m == gold:
        n_gold += 1
      elif m == silver:
        n_silver += 1
      elif m == bronze: 
        n_bronze += 1
    medals[e] = (n_gold, n_silver, n_bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  keys = [str(e) for e in medals.keys()]
  medals_list = []
  for e in keys:
    d = list(medals[e])
    d.append(e)
    medals_list.append(d)
  medals_list.sort(reverse=True)
  medals_list.append([-1,-1,-1,'A'])
  check = []
  p = []
  count = 0
  for i in range(len(medals_list)):
    if medals_list[i][:3] == medals_list[i+1][:3]:
      p.append(medals_list[i][-1:]+medals_list[i][:3])
    else:
      if len(p)>0:
        p.append(medals_list[i][-1:]+medals_list[i][:3])
        p.sort()
        count += len(p)
        topfive += p
        p = []
      else:
        topfive.append(medals_list[i][-1:]+medals_list[i][:3])
        count += 1 
      if count >= 5:
        break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  keys = [str(e) for e in athletes_by_Year_NOC.keys() if e >= str(start) and e <= str(end)]
  keys.sort()
  for year in keys:
    medals = get_medals_by_team(athletes_by_Year_NOC, year) 
    if NOC in medals:
      medal = medals[NOC]
      trend.append((year, )+medal)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    by_noc = athletes_by_Year_NOC[year]
  else:
    return sports
  if NOC in by_noc:
    data = by_noc[NOC]
    sport_list = []
    for i in range(len(data)):
      if data[i]['Medal'] != 'NA':
        sports.add(data[i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  first = True
  for NOC in NOCs:
    if first :
      sports = get_sports(athletes_by_Year_NOC, NOC, year)
      first = False
    else:
      q = get_sports(athletes_by_Year_NOC, NOC, year)
      sports = sports.intersection(q)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6231701821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1304, 'const': 968, 'code+const': 2272}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range (1,(len(data))):
      temp = {}
      for j in range (0,15):
          temp[data[0][j]] = data[i][j]
      if data[i][9] not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[data[i][9]] = {}
          if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
              athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
              athletes_by_Year_NOC[data[i][9]][data[i][7]].append(temp)
      else:
          if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
              athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
              athletes_by_Year_NOC[data[i][9]][data[i][7]].append(temp)
          else:
              athletes_by_Year_NOC[data[i][9]][data[i][7]].append(temp)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d = athletes_by_Year_NOC
  if year in athletes_by_Year_NOC:
      for e in d[year]:
          go = 0
          si = 0
          br = 0
          for i in range (len(d[year][e])):
              if d[year][e][i]['Medal'] == 'Gold':
                  go += 1
              elif d[year][e][i]['Medal'] == 'Silver':
                  si += 1
              elif d[year][e][i]['Medal'] == 'Bronze':
                  br += 1
          medals[e] = (go,si,br)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  tem = []
  ct = 4
  temp = []
  for e in medals:
      tem.append(list(medals[e]) + [e])    
  tem.sort(reverse = True)
  for i in range(len(tem)):
      tem[i].insert(0,tem[i].pop(3))
  for i in range(len(tem)):
      tem[i] = tuple(tem[i])
  for i in range(5):    
      temp.append(tem[i])
  while tem[ct][1:] == tem[ct+1][1:]:
      temp.append(tem[ct+1])
      ct += 1
  te = []
  for i in range(len(temp)):
      te.append(temp[i])
      if i+1 == len(temp):
          te.sort()
          topfive += te
      elif temp[i][1:] != temp[i+1][1:]:
          te.sort()
          topfive += te
          te = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
      tem2 = get_medals_by_team(athletes_by_Year_NOC,str(i))
      if NOC in tem2:
          tem3 = tem2[NOC]
          tem4 = tuple([str(i)] + list(tem3))
          if tem4 != tuple():
              trend.append(tem4)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  s1 = []
  d = athletes_by_Year_NOC
  if (year in d) and (NOC in d[year]):
      for i in range (len(d[year][NOC])):
            if d[year][NOC][i]['Medal'] != 'NA':
                if d[year][NOC][i]['Sport'] not in s1:
                    s1.append(d[year][NOC][i]['Sport'])
  sports = set(s1)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  x = []
  for e in NOCs:
      x.append(get_sports(athletes_by_Year_NOC,e,year))
  if x != []:
      sports = sports | x[0]
      for i in range (1,len(x)):
          sports = sports & x[i]  
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6330546821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 834, 'const': 1236, 'code+const': 2070}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  #subdict = dict()
  #sublist = list()
  for i in range(1, len(data)):
    subsubdict = dict()
    for j, k in enumerate(['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']):
      subsubdict[k] = data[i][j]
    if data[i][9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[data[i][9]] = dict()
      subdict = athletes_by_Year_NOC[data[i][9]]
    else:
      subdict = athletes_by_Year_NOC[data[i][9]]
    if data[i][7] not in subdict:
      subdict[data[i][7]] = list()
    subdict[data[i][7]].append(subsubdict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for each_NOC in athletes_by_Year_NOC[year].keys():
    each_athlete = athletes_by_Year_NOC[year][each_NOC]
    cnt_gold = 0
    cnt_silver = 0
    cnt_bronze = 0
    for e in each_athlete:
      get_med = e.get('Medal')
      if get_med == 'Gold':
        cnt_gold += 1
      elif get_med == 'Silver':
        cnt_silver += 1
      elif get_med == 'Bronze':
        cnt_bronze += 1
    medals[each_NOC] = tuple([cnt_gold, cnt_silver, cnt_bronze])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for each_year in range(start, end+1):
    if str(each_year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(each_year)]:
      cnt_gold = 0
      cnt_silver = 0
      cnt_bronze = 0
      for each_athlete in athletes_by_Year_NOC[str(each_year)][NOC]:
        medal = each_athlete['Medal']
        if medal == 'Gold':
          cnt_gold += 1
        elif medal == 'Silver':
          cnt_silver += 1
        elif medal == 'Bronze':
          cnt_bronze += 1
      trend.append((str(each_year), cnt_gold, cnt_silver, cnt_bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    for each_athlete in athletes_by_Year_NOC[year].get(NOC, list()):
      if 'Sport' in each_athlete and 'Medal' in each_athlete:
        sport = each_athlete['Sport']
        medal = each_athlete['Medal']
        if medal != 'NA': 
          sports.add(sport)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports_bothparti_NOC = dict()
  for NOC in NOCs:
    sports_bothparti_NOC[NOC] = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
      for each_athlete in athletes_by_Year_NOC[year][NOC]:
        sport = each_athlete['Sport']
        medal = each_athlete['Medal']
        if medal != 'NA':
          sports_bothparti_NOC[NOC].add(sport)
  if len(sports_bothparti_NOC) == 0:
    return set()
  sports = sorted(sports_bothparti_NOC.values())[0]
  for s in sorted(sports_bothparti_NOC.values()):
    sports = sports.intersection(s)
  return sports

6430287321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 898, 'const': 944, 'code+const': 1842}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1, len(data)) :
    path = {} 
    if data[i][9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[data[i][9]] = {}
    if data[i][7] not in athletes_by_Year_NOC[data[i][9]] :
      athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    for ind in range(15) :
      path[data[0][ind]] = data[i][ind]
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(path)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  NOC_dict = athletes_by_Year_NOC[year]
  for NOC in NOC_dict :
    gold = 0
    silver = 0
    bronze = 0
    for data in NOC_dict[NOC] :
      if data["Medal"] == "Gold" :
        gold += 1
      if data["Medal"] == "Silver" :
        silver += 1
      if data["Medal"] == "Bronze" :
        bronze += 1
    medals[NOC] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  path = sorted(medals.values())
  path = path[::-1]
  check = []
  idx = 0
  while(len(check) != 5) :
    if path[idx] not in check :
      check.append(path[idx])
    idx += 1
  idx = 0
  while(idx < 5) :
    sort_NOC = list()
    if len(topfive) >= 5 :
      break
    for data in medals :
      if medals[data] == check[idx] :
        sort_NOC.append(data)
      sort_NOC.sort()
    for NOC in sort_NOC :
      topfive.append((NOC, check[idx][0], check[idx][1], check[idx][2]))
    idx += 1  
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end + 1) :
    if str(year) in athletes_by_Year_NOC :
      this_year = get_medals_by_team(athletes_by_Year_NOC, str(year))
      if NOC in this_year :
        trend.append((str(year), this_year[NOC][0], this_year[NOC][1], this_year[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      data = athletes_by_Year_NOC[year][NOC]
      for i in data :
        if i["Medal"] != "NA" :
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  NOCs = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  path = set()
  for ind in range(1, len(NOCs)) :
    path = get_sports(athletes_by_Year_NOC, NOCs[ind], year)
    sports = sports.intersection(path)
    path = set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6430418221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('string index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 918, 'const': 1285, 'code+const': 2203}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1:]:
    sub = {}
    if i[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[i[9]] = {}
    if i[7] not in athletes_by_Year_NOC[i[9]]:
      athletes_by_Year_NOC[i[9]][i[7]] = []
    for j in range(len(i)):
      sub[data[0][j]] = i[j]
    athletes_by_Year_NOC[i[9]][i[7]].append(sub)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year].keys():
    g = 0
    s = 0
    b = 0
    for c in athletes_by_Year_NOC[year][i]:
      med = c['Medal']
      if med == 'Gold':
        g+=1
      elif med == "Silver":
        s+=1
      elif med =='Bronze':
        b+=1
    medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  for i in medals.keys():
    topfive.append((i,medals[i][0],medals[i][1],medals[i][2]))
  topfive.sort(key = lambda x :(x[1],x[2],x[3],-ord(x[0][0]),-ord(x[0][1]),-ord(x[0][2])),reverse=True)
  last = 4
  l = topfive[last]
  nl = topfive[last+1]
  while l[1:] == nl[1:]:
    last+=1
    l = topfive[last]
    nl = topfive[last+1]
  return topfive[:last+1]
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        g = 0
        s = 0
        b = 0
        for j in athletes_by_Year_NOC[str(i)][NOC]:
          med = j['Medal']
          if med == 'Gold':
            g+=1
          elif med == "Silver":
            s+=1
          elif med =='Bronze':
            b+=1
        trend.append((str(i),g,s,b))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]:
        if i['Medal'] != 'NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  i = 0
  for NOC in NOCs:
    a = get_sports(athletes_by_Year_NOC,NOC,year)
    if i == 0:
      sports = a
      i= 1
    else:
      sports = sports.intersection(a)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431026021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 930, 'const': 1020, 'code+const': 1950}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(len(data)):
    if i != 0:
      t = {}
      for j in range(15):
        t[data[0][j]] = data[i][j]
      if data[i][9] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[data[i][9]] = {data[i][7]: [t]}
      elif data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = [t]
      else:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] += [t]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for n in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for d in athletes_by_Year_NOC[year][n]:
      m = d['Medal']
      if m == 'Gold':
        g += 1
      elif m == 'Silver':
        s += 1
      elif m == 'Bronze':
        b += 1
    medals[n] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l = []
  for k in medals:
    l.append([medals[k][0],medals[k][1],medals[k][2],k])
  l.sort(reverse = True)
  r = l[:5]
  i = 0
  while True:
    if l[4][:3] == l[5+i][:3]:
      r.insert(4, l[5+i])
    else:
      break
    i += 1
  for e in r:
    topfive.append((e[3],e[0],e[1],e[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start, end+1):
    if str(y) in athletes_by_Year_NOC:
      d = get_medals_by_team(athletes_by_Year_NOC, str(y))
      if NOC in d:
        t = d[NOC] 
        nt = (str(y), t[0], t[1] ,t[2])
        trend.append(nt)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for d in athletes_by_Year_NOC[year][NOC]:
      if d['Medal'] != 'NA':
        sports = sports.union({d['Sport']})
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  i = 0 
  for  NOC in NOCs:
    if i == 0 and year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
      sports = sports.union(get_sports(athletes_by_Year_NOC, NOC, year))
    elif year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
      sports = sports.intersection(get_sports(athletes_by_Year_NOC, NOC, year))
    else:
      sports = sports.intersection({})
    i += 1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431539721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[[('C', 1, 1, 1]), [('E', 1, 1, 1]), [('A', 1, 1, 0]), [('B', 1, 1, 0]), [('D', 1, 1, 0])],
 [[('B', 1, 1, 1]), [('A', 1, 1, 0]), [('D', 1, 0, 1]), [('F', 1, 0, 0]), [('C', 0, 1, 0])],
 [[('C', 9, 10, 9]), [('E', 9, 10, 8]), [('A', 9, 9, 9]), [('F', 9, 7, 9]), [('B', 9, 2, 1]), [('D', 9, 2, 1])],
 [[('Q', 3, 3, 3]), [('A', 3, 2, 1]), [('B', 3, 2, 1]), [('F', 3, 2, 1]), [('J', 3, 2, 1]), [('K', 3, 2, 1]),
  [('M', 3, 2, 1]), [('N', 3, 2, 1]), [('S', 3, 2, 1]), [('Z', 3, 2, 1])]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 922, 'const': 1200, 'code+const': 2122}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        info = {}
        for e in range(0,15):
            info[data[0][e]] = data[i][e]
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {data[i][7] : [info]}
        else:
            if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(info)
            else:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = [info]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    NOC = athletes_by_Year_NOC[year].keys()
    for country in NOC:
        gold = 0 ; silver = 0 ; bronze = 0
        for player in athletes_by_Year_NOC[year][country]:
            if player['Medal'] == 'Gold':
                gold += 1
            elif player['Medal'] == 'Silver':
                silver += 1
            elif player['Medal'] == 'Bronze':
                bronze += 1
        medals[country] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    toplist = []
    for noc in medals:
        toplist.append([noc,medals[noc]])
    tops = sorted(toplist, key = lambda x:x[1], reverse=True)
    top5 = tops[:5]
    for n in range(5,len(medals)):
        if tops[n][1] == top5[-1][1]:
            top5.append(tops[n])
    temp = sorted(top5, key= lambda x:x[0])
    top5 = sorted(temp, key = lambda x:x[1], reverse=True)
    for e in top5:
        data = [e[0],e[1][0],e[1][1],e[1][2]]
        topfive.append(data)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1):
        if athletes_by_Year_NOC.get(str(year),0) != 0:
            medals = get_medals_by_team(athletes_by_Year_NOC, str(year))
            if medals.get(NOC,0) != 0:
                trend.append((str(year),medals[NOC][0],medals[NOC][1],medals[NOC][2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if athletes_by_Year_NOC.get(year,0) != 0:
        if athletes_by_Year_NOC[year].get(NOC,0) != 0:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i['Medal'] != 'NA':
                    sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    splist = []
    for NOC in NOCs:
        data = get_sports(athletes_by_Year_NOC, NOC, year)
        splist.append(data)
    return splist[0].intersection(*splist)
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530230621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1308, 'const': 1148, 'code+const': 2456}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    dict_data = {}
    for i in range(1,len(data)):
        if data[i][9] in dict_data:
            year = data[i][9]
            noc = data[i][7]
            if data[i][7] in dict_data[year]:
                temp = {}
                for k in range(len(data[i])):
                    topic = data[0][k]
                    intel = data[i][k]
                    temp[topic] = intel
                dict_data[year][noc].append(temp)
            else:
                temp = {}
                for k in range(len(data[i])):
                    topic = data[0][k]
                    intel = data[i][k]
                    temp[topic] = intel
                dict_data[year][noc] = [temp]
        else:
            noc = {}
            year = data[i][9]
            temp = {}
            for k in range(len(data[i])):
                temp[data[0][k]] = data[i][k]
            noc[data[i][7]] = [temp]
            dict_data[year] = noc
    return dict_data
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    noc_data = athletes_by_Year_NOC[year]
    medal_dict = {}
    for country in noc_data:#แต่ละประเทศ
        medal_count = [0,0,0]
        for k in range(len(noc_data[country])):#แต่ละคนในประเทศนั้น
            if noc_data[country][k]['Medal'] == 'Gold':
                medal_count[0] += 1
            elif noc_data[country][k]['Medal'] == 'Silver':
                medal_count[1] += 1
            elif noc_data[country][k]['Medal'] == 'Bronze':
                medal_count[2] += 1
        medal_dict[country] = tuple(medal_count)
    return medal_dict
#======================================
def get_top_five(medals):
    topfive = []
    check = []
    for country in medals:
        check.append((medals[country],country))
    check = sorted(check)[::-1]
    temp = check[:4:]
    draw_count = 1
    for i in range(4,4+len(check[4::])-1):
        if check[i][0] == check[i+1][0]:
            draw_count += 1
        else:
            break
    for e in check[4:4+draw_count:]:
        temp.append(e)
    start = 0
    end   = 0
    same_score = False
    temp1 = []
    for k in range(len(temp)-1):
        #print(temp[k],temp[k+1])
        if temp[k][0] != temp[k+1][0]:
            if same_score == True:
                #print(temp[start:end+1])
                for x in sorted(temp[start:end+1]):
                    temp1.append(x)
                same_score = False
            else:
                temp1.append(temp[k])
        else:
            if same_score == False:
                start = k
                end = start+1
                same_score = True
            else:
                end += 1
    if same_score == True:
        for x in sorted(temp[start:end+1]):
            temp1.append(x)
    elif len(temp1) != 5:
        temp1.append(temp[-1])
    for y in temp1:
        topfive.append((y[1],y[0][0],y[0][1],y[0][2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC.keys() and NOC in athletes_by_Year_NOC[str(year)]:
      noc_medal = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
      trend.append((year,noc_medal[0],noc_medal[1],noc_medal[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
      for data in athletes_by_Year_NOC[year][NOC]:
          if data['Medal'] == 'Bronze' or data['Medal'] == 'Silver' or data['Medal'] == 'Gold':
              sport_name = data['Sport']
              sports.add(sport_name)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  check = []
  for country in NOCs:
      check.append(get_sports(athletes_by_Year_NOC, country, year))
  sports = set.intersection(*check)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530247321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 994, 'const': 1089, 'code+const': 2083}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  x = {}
  y = []
  z = data[0]
  n = len(data)
  for i in range(1,n):
    k = len(data[i])
    a = data[i]
    for j in range(0,k):
      x[z[j]] = a[j]
    y.append(x)
    x = {}
  s = set()
  r = set()
  for e in y:
    s.add(e["Year"])
    r.add(e["NOC"])
  for q in s:
    g = {}
    for t in r:
      f = []
      for e in y:
        if e["Year"] == q and e["NOC"] == t:
          f.append(e)
      if f != []:
        g[t] = f
    athletes_by_Year_NOC[q] = g
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for e in athletes_by_Year_NOC[year].keys():
      a = athletes_by_Year_NOC[year][e]
      G,S,B = 0,0,0
      for k in a:
        if k["Medal"] == "Gold":G += 1
        elif k["Medal"] == "Silver":S += 1
        elif k["Medal"] == "Bronze":B += 1
      medals[e] = (G,S,B)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  y = []
  for k,v in medals.items():
    y.append((v[0],v[1],v[2],k))
  y.sort()
  x = []
  z = []
  for i in range(-1,-6,-1):
    x.append(y[i])
  k = -1
  while k < 0:
    a = y[-5]
    b = a[0:3:]
    c = y[-5+k]
    d = c[0:3:]
    if b != d:break
    else:
      x.append(c)
      k += -1
  for e in x:
    topfive.append((e[-1],)+e[0:3:])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start % 2 != 0: start += 1
  if end % 2 != 0: end -= 1
  for i in range(start,end+1,2):
    medals = get_medals_by_team(athletes_by_Year_NOC, str(i))
    if NOC in medals:
      trend.append((str(i),)+medals[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      a = athletes_by_Year_NOC[year][NOC]
      for e in a:
        if e["Medal"] != "NA":
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  x = []
  for e in NOCs:
    x.append(get_sports(athletes_by_Year_NOC, e, year))
  n = len(x)
  sports = x[0].intersection(x[1])
  for i in range(2,n):
    sports = sports.intersection(x[i])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530253021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1086, 'const': 1053, 'code+const': 2139}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  top = data[0]
  for id in data[1:]:
    d = {}
    for i in range(len(top)):
      d[top[i]] = id[i]
    if d["Year"] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[d["Year"]] = {}
    if d["NOC"] not in athletes_by_Year_NOC[d["Year"]]:
      athletes_by_Year_NOC[d["Year"]][d["NOC"]] = []
    athletes_by_Year_NOC[d["Year"]][d["NOC"]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {}
  for NOC in athletes_by_Year_NOC[year]:
    GSB = [0,0,0]
    for p in athletes_by_Year_NOC[year][NOC]:
      if p["Medal"] == "Gold":
        GSB[0] += 1
      if p["Medal"] == "Silver":
        GSB[1] += 1
      if p["Medal"] == "Bronze":
        GSB[2] += 1
    medals[NOC] = tuple(GSB)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  topAll = []
  added = False
  for key,val in medals.items():
    val = [-e for e in val]
    topAll.append([val,key])
  topAll.sort()
  for top in topAll[:5]:
    topfive.append((top[1],abs(top[0][0]),abs(top[0][1]),abs(top[0][2])))
  for i in range(5,len(topAll)+5):
    if topAll[i][0] == topAll[i+1][0]:
      topfive.append((topAll[i+1][1],abs(topAll[i+1][0][0]),abs(topAll[i+1][0][1]),abs(topAll[i+1][0][2])))
      added = True
    elif added:
      topfive.append((topAll[i][1],abs(topAll[i][0][0]),abs(topAll[i][0][1]),abs(topAll[i][0][2])))
      break
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start,end+1):
    if str(y) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(y)]:
        medals = get_medals_by_team(athletes_by_Year_NOC, str(y))[NOC]
        trend.append((str(y),medals[0],medals[1],medals[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for d in athletes_by_Year_NOC[year][NOC]:
        if d["Medal"] != "NA":
          sports.add(d["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs = list(NOCs)
  for i in range(len(NOCs)):
    if year in athletes_by_Year_NOC:
      if NOCs[i] in athletes_by_Year_NOC[year]:
        interS = get_sports(athletes_by_Year_NOC, NOCs[i], year)
        if i == 0:
          sports.update(interS)
        else:
          sports.intersection_update(interS)
      else:
        return set()
    else:
      return set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530269121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1216, 'const': 1404, 'code+const': 2620}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for year in data:
      if year[9] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[year[9]] = {}
    for NOC in data:
      if NOC[7] not in athletes_by_Year_NOC[NOC[9]]:
        athletes_by_Year_NOC[NOC[9]][NOC[7]] = []
    for e in data[1:]:
       athletes_by_Year_NOC[e[9]][e[7]].append({data[0][i]:e[i] for i in range(len(data[0]))})
    if 'Year' in athletes_by_Year_NOC:
        del athletes_by_Year_NOC['Year']
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for key in athletes_by_Year_NOC[year]:
    noc = key
    tmpList = athletes_by_Year_NOC[year][noc]
    for d in tmpList:
      medalPerson = d["Medal"]
      if medalPerson == "NA":
        medalPerson = (0, 0, 0)
      elif medalPerson == "Gold":
        medalPerson = (1, 0, 0)
      elif medalPerson == "Silver":
        medalPerson = (0, 1, 0)
      elif medalPerson == "Bronze":
        medalPerson = (0, 0, 1)
      if (noc in medals):
        newTuple = (medals[noc][0] + medalPerson[0], medals[noc][1] + medalPerson[1], medals[noc][2] + medalPerson[2])
        medals[noc] = newTuple
      else:
        medals[noc] = medalPerson
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  storedList = []
  #key = NOC, val = tuple of medal
  for key, val in medals.items():
    storedList.append([val[0], val[1], val[2], key])
  storedList.sort(reverse = True)
  topfive.append((storedList[0][3],storedList[0][0],storedList[0][1],storedList[0][2]))
  currentIdx = 1
  while (True):
    g2 = storedList[currentIdx][0]
    s2 = storedList[currentIdx][1]
    b2 = storedList[currentIdx][2]
    noc = storedList[currentIdx][3]
    if (len(topfive) < 5):
      topfive.append((noc,g2, s2, b2))
      currentIdx += 1
    else:
      g1 = topfive[-1][1]
      s1 = topfive[-1][2]
      b1 = topfive[-1][3]
      if (g1 == g2 and s1 == s2 and b1 == b2):
        topfive.append((noc,g2, s2, b2))
        currentIdx += 1
      else:
        break
  for i in range(len(topfive)):
      for j in range(len(topfive)-1):
          if topfive[j][1:] == topfive[j+1][1:]:
              if topfive[j][0] > topfive[j+1][0]:
                  topfive[j], topfive[j+1] = topfive[j+1], topfive[j]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  getYear = {}
  for key in athletes_by_Year_NOC:
    if (int(key) >= start and int(key) <= end):
      if int(key) % 2 == 0:
        getYear[key] = athletes_by_Year_NOC[key]
  for key in getYear:
    medalDict = get_medals_by_team(getYear, key)
    if NOC in medalDict:
      medals = medalDict[NOC]
      trend.append((key, medals[0], medals[1], medals[2]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    for d in athletes_by_Year_NOC[year]:
      if (NOC in d):
        for dc in athletes_by_Year_NOC[year][NOC]:
          if dc["Medal"] != "NA":
            sports.add(dc["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    tmpNOC = []
    for rndNOC in NOCs:
      tmpNOC.append(get_sports(athletes_by_Year_NOC, rndNOC, year))
    sports = sports.union(tmpNOC[0])
    for rndnoc in tmpNOC:
      sports = sports.intersection(rndnoc)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530272021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_010.0TypeError("'str' object does not support item assignment")
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 918, 'const': 1277, 'code+const': 2195}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  a = {}
  for row in data[1:]:
    y = row[9]
    n = row[7]
    if y not in a:
      a[y] = dict()
    if n not in a[y]:
      a[y][n] = []
    r = dict()
    for j in range(len(row)):
      r[data[0][j]] = row[j]
    a[y][n].append(r)
  return a
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  m = {}
  for n in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for row in athletes_by_Year_NOC[year][n]:
      m = row['Medal']
      if m == 'Gold':
        g += 1
      elif m == 'Silver':
        s += 1
      elif m == 'Bronze':
        b += 1
    m[n] = (g, s, b)
  return m
#======================================
def get_top_five(medals):
  t = []
  m_list = []
  for n in medals:
    g = medals[n][0]
    s = medals[n][1]
    b = medals[n][2]
    m_list.append((n, g, s, b))
  sorted_m = sorted(m_list, key = lambda x : (-x[1], -x[2], -x[3], x[0]))
  t = sorted_m[:5]
  if len(sorted_m) < 5 :
    return t
  fifth_place = sorted_m[4][1:]
  for medal in sorted_m[5:]:
    if medal[1:] == fifth_place:
      t.append(medal)
    else:
      break
  return t
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  t = []
  for y in range(start, end + 1):
    g = 0
    s = 0
    b = 0
    y = str(y)
    if y not in athletes_by_Year_NOC:
      continue
    if NOC not in athletes_by_Year_NOC[y]:
      continue
    for row in athletes_by_Year_NOC[y][NOC]:
      medal = row['Medal']
      if medal == 'Gold':
        g += 1
      elif medal == 'Silver':
        s += 1
      elif medal == 'Bronze':
        b += 1
    t.append((y, g, s, b))
  return t
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  s = set()
  if year not in athletes_by_Year_NOC:
    return s
  if NOC not in athletes_by_Year_NOC[year]:
    return s
  for row in athletes_by_Year_NOC[year][NOC]:
    m = row['Medal']
    sport = row['Sport']
    if m != 'NA':
      s.add(sport)
  return s
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  s = set()
  if len(NOCs) == 0:
    return s
  n_list = []
  for NOC in NOCs:
    n_list.append(NOC)
  s = set.union(s, get_sports(athletes_by_Year_NOC, n_list[0], year))
  for NOC in n_list[1:]:
    s = set.intersection(s, get_sports(athletes_by_Year_NOC, NOC, year))
  return s
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530275921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1026, 'const': 1985, 'code+const': 3011}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  nocs = {}
  info = {}
  for e in data[1::]:
      year = e[9]
      noc = e[7]
      info ={}
      if year not in athletes_by_Year_NOC :
          athletes_by_Year_NOC[year] = {}
      if noc not in athletes_by_Year_NOC[year] :
          athletes_by_Year_NOC[year][noc] = []
      info['ID'] = e[0]
      info['Name'] = e[1]
      info['Sex'] = e[2]
      info['Age'] = e[3]
      info['Height'] = e[4]
      info['Weight'] = e[5]
      info['Team'] = e[6]
      info['NOC'] = e[7]
      info['Games'] = e[8]
      info['Year'] = e[9]
      info['Season'] = e[10]
      info['City'] = e[11]
      info['Sport'] = e[12]
      info['Event'] = e[13]
      info['Medal'] = e[14]
      athletes_by_Year_NOC[year][noc].append(info)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  a = athletes_by_Year_NOC[year]
  gold = 0
  silver = 0
  bronze = 0
  for e in a:
    for d in a[e]:
      if d['Medal'] == 'Gold':
        gold += 1
      if d['Medal'] == 'Silver':
        silver += 1
      if d['Medal'] == 'Bronze':
        bronze += 1
    medals[e] = (gold,silver,bronze)
    gold = 0
    silver = 0
    bronze = 0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l = []
  for e in medals:
    a = medals[e]
    l.append(list(a)+[e])
  l.sort() 
  if len(l) == 0 :
    return []
  else:
    n = -1
    ans = []
    while True:
      m1 =  l[n][:3]
      m2 = l[n-1][:3]
      if m1 == m2:
        ans.append(l[n][3])
        n-=1
      else:
        x = []
        ans.append(l[n][3])
        ans.sort()
        for i in ans:
          k = [i]+m1
          topfive.append(tuple(k))
        n-=1
        ans=[]
      if len(topfive) >=5:
        break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    i = str(i)
    if  i in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[i]:
      a = get_medals_by_team(athletes_by_Year_NOC, i)
      b = a[NOC]
      c = (i, )+b
      trend.append(c)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if  year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    a = athletes_by_Year_NOC[year][NOC]
    for e in a:
      b = e['Medal']
      if b in ['Gold','Silver','Bronze']:
        c = e['Sport']
        sports.add(c)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  p = []
  if len(NOCs) == 0:
    return set()
  else:
    for e in NOCs:
      a = get_sports(athletes_by_Year_NOC, e, year)
      p.append(a)
    g = p[0]
    for i in range(len(p)):
      g = g.intersection(p[i])
    sports = g
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530297721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 716, 'const': 893, 'code+const': 1609}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1:]:
    a = {}
    ath = athletes_by_Year_NOC
    for j in range(len(i)):
      a[data[0][j]] = i[j]
    if a['Year'] not in ath:
      ath[a['Year']] = {}
    if a['NOC'] not in ath[a['Year']]:
      ath[a['Year']][a['NOC']] = []
    if a not in ath[a['Year']][a['NOC']]:
      ath[a['Year']][a['NOC']].append(a)
    athletes_by_Year_NOC = ath
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  ath = athletes_by_Year_NOC
  if year in ath:
    for i in ath[year]:
      medals[i] = [0,0,0]
      for e in ath[year][i]:
        if e['Medal'] == 'Gold':
          medals[i][0] += 1
        elif e['Medal'] == 'Silver':
          medals[i][1] += 1
        elif e['Medal'] == 'Bronze':
          medals[i][2] += 1
  for e in medals:
    medals[e] = tuple(medals[e])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  ath = athletes_by_Year_NOC
  for i in range(start,end+1):
    if str(i) in ath:
      if NOC in get_medals_by_team(ath,str(i)):
        m = get_medals_by_team(ath,str(i))[NOC]
        trend.append((str(i),m[0],m[1],m[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  ath = athletes_by_Year_NOC
  if year in ath:
    if NOC in ath[year]:
      for i in ath[year][NOC]:
        if i['Medal'] != 'NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if len(list(NOCs))>0:
    a=list(NOCs)
    sports=get_sports(athletes_by_Year_NOC, a[0], year)
    for i in a:
      sports = sports & get_sports(athletes_by_Year_NOC,i,year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530305021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1410, 'const': 1286, 'code+const': 2696}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  head = data[0]
  info = data[1:]
  for person in info:
    reinfo = {}
    for x,y in zip(head[:],person[:]):
      reinfo[x] = y
    found = False
    for year,NOC in athletes_by_Year_NOC.items():
      if reinfo["Year"] == year:
        found = True
        if reinfo["NOC"] in NOC:
          athletes_by_Year_NOC[reinfo["Year"]][reinfo["NOC"]].append(reinfo)
        else:
          athletes_by_Year_NOC[reinfo["Year"]][reinfo["NOC"]] = [reinfo]
    if not found:
      athletes_by_Year_NOC[reinfo["Year"]] = {reinfo["NOC"]:[reinfo]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year]:
    for p in athletes_by_Year_NOC[year][NOC]:
      g = 0; s = 0; b = 0
      if p["Medal"] == "Gold":
        g += 1
      elif p["Medal"] == "Silver":
        s += 1
      elif p["Medal"] == "Bronze":
        b += 1
      if NOC not in medals:
        medals[NOC] = (g,s,b)
      else:
        gsb = [g,s,b]
        x = list(medals[NOC])
        for i in range(3):
          gsb[i] += x[i]
        medals[NOC] = (gsb[0],gsb[1],gsb[2])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  forSort = []
  for NOC in medals:
    forSort.append([[-e for e in medals[NOC]], NOC])
  forSort.sort()
  doubleCheck = False
  for i in range(len(forSort)):
    if len(topfive) >= 4:
      if forSort[i][0]==forSort[i+1][0]:
        if doubleCheck:
          topfive.append((forSort[i+1][1],abs(forSort[i+1][0][0]),abs(forSort[i+1][0][1]),abs(forSort[i+1][0][2])))
        else:
          topfive.append((forSort[i][1],abs(forSort[i][0][0]),abs(forSort[i][0][1]),abs(forSort[i][0][2])))
          topfive.append((forSort[i+1][1],abs(forSort[i+1][0][0]),abs(forSort[i+1][0][1]),abs(forSort[i+1][0][2])))
          doubleCheck = True
      elif doubleCheck:
        break
      else:
        topfive.append((forSort[i][1],abs(forSort[i][0][0]),abs(forSort[i][0][1]),abs(forSort[i][0][2])))
        break
    else:
      topfive.append((forSort[i][1],abs(forSort[i][0][0]),abs(forSort[i][0][1]),abs(forSort[i][0][2])))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(year)]:
        g = 0; s = 0; b = 0
        for p in athletes_by_Year_NOC[str(year)][NOC]:
          if p["Medal"] == "Gold":
            g += 1
          elif p["Medal"] == "Silver":
            s += 1
          elif p["Medal"] == "Bronze":
            b += 1
        trend.append((str(year),g,s,b))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for p in athletes_by_Year_NOC[year][NOC]:
        if p["Medal"] != "NA":
          sports.add(p["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  first = True
  if year in athletes_by_Year_NOC:
    for NOC in NOCs:
      if NOC in athletes_by_Year_NOC[year]:
        if not first:
          sports.intersection_update(get_sports(athletes_by_Year_NOC, NOC, year))
        else:
          first = False
          sports.update(get_sports(athletes_by_Year_NOC, NOC, year))
      else:
        sports = set()
        break
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530319921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 748, 'const': 1156, 'code+const': 1904}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    k = len(data)
    for i  in range(1,k):
        dict_player = {}
        for j in range(15):
            dict_player[data[0][j]] = data[i][j]
        NOC = data[i][7]
        year = data[i][9]
        if year in athletes_by_Year_NOC:
            if NOC not in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][NOC] = [dict_player]
            else :
                athletes_by_Year_NOC[year][NOC].append(dict_player)
        else :
            athletes_by_Year_NOC[year] = {NOC:[dict_player]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
      Gold = 0
      Silver = 0
      Bronze = 0
      for j in athletes_by_Year_NOC[year][i]:
          if j['Medal'] == 'Gold':
              Gold += 1
          if j['Medal'] == 'Silver':
              Silver += 1
          if j['Medal'] == 'Bronze':
              Bronze += 1
      medals[i] = (Gold, Silver, Bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  while start <= end :
       Gold = 0
       Silver = 0
       Bronze = 0
       if str(start) in athletes_by_Year_NOC:
           if NOC in athletes_by_Year_NOC[str(start)]:
              for j in athletes_by_Year_NOC[str(start)][NOC]:
                  if j['Medal'] == 'Gold':
                      Gold += 1
                  if j['Medal'] == 'Silver':
                      Silver += 1
                  if j['Medal'] == 'Bronze':
                      Bronze += 1
              trend.append((str(start), Gold , Silver , Bronze))
       start += 1
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
     if NOC in athletes_by_Year_NOC[year]:
        for i in athletes_by_Year_NOC[year][NOC]:
            if i['Medal'] != 'NA':
                sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  n = 0
  if year in athletes_by_Year_NOC:
      for i in NOCs:
                if i in athletes_by_Year_NOC[year]:
                    a = set()
                    for j in athletes_by_Year_NOC[year][i]:
                        if j['Medal'] != 'NA':
                            a.add(j['Sport'])
                else :
                    return set()
                if n == 0 :
                      sports  = sports.union(a)
                      n += 1
                else :
                      sports  = sports.intersection(a)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530327921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1062, 'const': 1304, 'code+const': 2366}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:]:
    info = {data[0][i]:e[i] for i in range(15)}
    if e[9] in athletes_by_Year_NOC.keys():
      athletes_by_Year_NOC[e[9]][e[7]] = athletes_by_Year_NOC[e[9]].get(e[7],[])+[info]
    else:
      athletes_by_Year_NOC[e[9]] = {e[7]:[info]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC.keys():
    return {}
  key = athletes_by_Year_NOC[year].keys()
  for i in key:
    medals[i] = [0,0,0]
    for j in athletes_by_Year_NOC[year][i]:
      if j['Medal'] == 'Gold':
        medals[i][0]+=1
      elif j['Medal'] == 'Silver':
        medals[i][1]+=1
      elif j['Medal'] == 'Bronze':
        medals[i][2]+=1
    medals[i] = tuple(medals[i])
  return medals
#======================================
def get_top_five(medals):
  a = [(-med[0],-med[1],-med[2],noc) for med,noc in zip(medals.values(),medals.keys()) ]
  a.sort()
  tmp = a[:5]
  i = 1
  while a[4][0] == a[4+i][0] and a[4][1] == a[4+i][1] and a[4][2] == a[4+i][2]:
    tmp.append(a[4+i])
    i+=1
  topfive = [(e[3],-e[0],-e[1],-e[2]) for e in tmp]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = [(str(i),
            get_medals_by_team(athletes_by_Year_NOC,str(i)).get(NOC,(0,0,0))[0],
            get_medals_by_team(athletes_by_Year_NOC,str(i)).get(NOC,(0,0,0))[1],
            get_medals_by_team(athletes_by_Year_NOC,str(i)).get(NOC,(0,0,0))[2]
            ) for i in range(start,end+1) if NOC in get_medals_by_team(athletes_by_Year_NOC,str(i)).keys()]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC.keys():
    for e in athletes_by_Year_NOC[year].get(NOC,()):
      if e['Medal'] != 'NA':
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  List = [get_sports(athletes_by_Year_NOC, e, year) for e in NOCs]
  sports = set.intersection(*List)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530331321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1268, 'const': 1201, 'code+const': 2469}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  # head = data[0]
  # loca_y = head.index('Year')
  # loca_NOC = head.index('NOC')
  # loca_ID = head.index('ID')
  # laca_N = head.index('Name')
  # for f in range(1:len(data)):
  #   year = (data[i])[loca_y]
  # inner_dict1 = {}
  # for u in range(1:len(data)):
  #   NOC = (data[u])[loca_NOC]
  # inner_dict2 = {}
  # for c in range(1:len(data)):
  #   ID = (data[c])[loca_ID]
  #   Name = (data[c])[loca_N]
  # for k in ID:
  #   inner_dict2['ID'] = k
  # for y in Name:
  #   inner_dict2['Name'] = y
  y = data[0]
  loca_y = y.index('Year')
  loca_NOC = y.index('NOC')
  # print(len(data))
  for i in range(1,len(data)):
    x = data[i]
    if x[loca_y] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[x[loca_y]] = {}
    if x[loca_NOC] not in athletes_by_Year_NOC[x[loca_y]]:
      athletes_by_Year_NOC[x[loca_y]][x[loca_NOC]] = []
    innest_dict = {}
    for e in range(len(y)):
      if y[e] not in innest_dict:
        innest_dict[y[e]] = x[e]
    athletes_by_Year_NOC[x[loca_y]][x[loca_NOC]].append(innest_dict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  x = athletes_by_Year_NOC[year]
  medals_count = [0,0,0]
  final = []
  for f in x:
    peo = x[f]
    for u in range(len(peo)):
      if peo[u]['Medal'] == 'Gold':
        medals_count[0] += 1
      elif peo[u]['Medal'] == 'Silver':
        medals_count[1] += 1
      elif peo[u]['Medal'] == 'Bronze':
        medals_count[2] += 1
    final.append([f,medals_count[0],medals_count[1],medals_count[2]])
    medals_count = [0,0,0]
  for c in range(len(final)):
    final_tuple = tuple(final[c][1:])
    medals[final[c][0]] = final_tuple
  return medals 
#======================================
def get_top_five(medals):
  topfive = []
  medal = []
  for NOC in medals:
    medal.append([(-1)*medals[NOC][0],(-1)*medals[NOC][1],(-1)*medals[NOC][2],NOC])
  medal.sort()
  # print(medal)
  # print(medal)
  final = []
  final += medal[0:5]
  for fu in range(4,len(medal)):
    if medal[fu][0:3] == medal[fu+1][0:3]:
      final.append(medal[fu+1])
    else:
      break
  # final2 = []
  for i in range(len(final)):
    final[i][0] *= -1
    final[i][1] *= -1
    final[i][2] *= -1
  # print(final)  
  for ck in range(len(final)):
    topfive.append(tuple([final[ck][3],final[ck][0],final[ck][1],final[ck][2]]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  str_start = str(start)
  str_end = str(end)
  x = athletes_by_Year_NOC
  for i in range(start,end+1):
    if str(i) in x:
      if NOC in x[str(i)]:
        trend += [tuple([str(i)]+list(get_medals_by_team(x,str(i))[NOC]))]
      else:
        pass
    else:
      pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  # str_year = str(year)
  if year in athletes_by_Year_NOC:
    step1 = athletes_by_Year_NOC[year]
    if NOC in step1:
      x = step1[NOC]
      for fk in x:
        if fk['Medal'] == 'Gold' or fk['Medal'] == 'Silver' or fk['Medal'] == 'Bronze':
          sports.add(fk['Sport'])
    else:
      pass
  else:
    pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  x = []
  for f in NOCs:
    x.append(get_sports(athletes_by_Year_NOC,f,year))
  if len(NOCs) == 1:
    for u in NOCs:
      sports = get_sports(athletes_by_Year_NOC,u,year)
  elif len(NOCs) == 2:
    sports = x[0].intersection(x[1])
  elif len(NOCs) > 2:
    sports = x[0].intersection(x[1])
    for fu in range(2,len(NOCs)):
      sports = sports.intersection(x[fu])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530340021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1528, 'const': 1325, 'code+const': 2853}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    lis = data[0]
    py = lis.index('Year')
    pc = lis.index('NOC')
    for i in range(1,len(data),1):
        yea = (data[i])[py]
        cou = (data[i])[pc]
        check = {}
        for u in range(len(data[i])):
          check[(data[0])[u]] = (data[i])[u]
        if yea not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[yea] = {cou:[check]}
        elif cou not in athletes_by_Year_NOC[yea]:
          (athletes_by_Year_NOC[yea])[cou] = [check]
        else:
          (athletes_by_Year_NOC[yea])[cou] += [check]
        check = {}       
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    lisdic = athletes_by_Year_NOC[year]
    for cou in lisdic:
      medals[cou] = [0,0,0]
    for noc in medals:
        coun = lisdic[noc]
        for i in range(len(coun)):
            if (coun[i])['Medal'] == 'Gold':
                (medals[noc])[0] += 1
            elif (coun[i])['Medal'] == 'Silver':
                (medals[noc])[1] += 1
            elif (coun[i])['Medal'] == 'Bronze':
                (medals[noc])[2] += 1
    for info in medals:
      medals[info] = ((medals[info])[0],(medals[info])[1],(medals[info])[2])    
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    check = []
    check2 = []
    srtlis = []
    topfivelis = []
    for keys in medals:
        check += [[(medals[keys])[0],(medals[keys])[1],(medals[keys])[2],keys]]
    check.sort()
    check = check[::-1]
    check2 += check[0:5:1]
    for i in range(4,len(check),1):
      if (check[i])[0:3:1] == (check[i+1])[0:3:1]:
        check2 += [check[i+1]]
      else:
        break
    p = 0
    u = 0
    check2 += [['x','x','x','x']]
    while (p+u) < (len(check2)-1):
      if (check2[p+u])[0:3:1] != (check2[p+u+1])[0:3:1]:
        topfivelis += [check2[p+u]]
      elif (check2[p+u])[0:3:1] == (check2[p+u+1])[0:3:1]:
        srtlis += [check2[p+u]]
        if (check2[p+u+1])[0:3:1] != (check2[p+u+2])[0:3:1]:
          srtlis += [check2[p+u+1]]
          srtlis.sort()
          topfivelis += srtlis
          srtlis = []
          u += 1
      p +=1
    for t in range(len(topfivelis)):
      topfive += [((topfivelis[t])[3],(topfivelis[t])[0],(topfivelis[t])[1],(topfivelis[t])[2])]  
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1,1):
      if str(year) in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[str(year)]:
          lis_md_of_year = get_medals_by_team(athletes_by_Year_NOC, str(year))
          trend += [(str(year),(lis_md_of_year[NOC])[0],(lis_md_of_year[NOC])[1],(lis_md_of_year[NOC])[2])]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
          lis_of_cou = (athletes_by_Year_NOC[year])[NOC]
          for i in range(len(lis_of_cou)):
            if (lis_of_cou[i])['Medal'] == 'Gold':
              sports.add((lis_of_cou[i])['Sport'])
            elif (lis_of_cou[i])['Medal'] == 'Silver':
              sports.add((lis_of_cou[i])['Sport'])
            elif (lis_of_cou[i])['Medal'] == 'Bronze':
              sports.add((lis_of_cou[i])['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    check = []
    for i in NOCs:
      check += [get_sports(athletes_by_Year_NOC, i, year)]
    if len(check) == 1:
      return check[0]
    elif len(check) == 2:
      ans = check[0].intersection(check[1])
      return ans
    elif len(check) > 2:
      ans = check[0].intersection(check[1])
      for i in range(2,len(check),1):
        ans = ans.intersection(check[i])
      return ans
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530341621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1160, 'const': 1474, 'code+const': 2634}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  cata = data[0]
  for i in range(len(data)-1) :
    dd = {}
    NOC = {}
    info = data[i+1]
    for x,y in enumerate(cata) :
      dd[y] = info[x]
    year = dd["Year"]
    NOC = dd["NOC"]
    if year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[year] = {}
    if year in athletes_by_Year_NOC :
      if NOC not in athletes_by_Year_NOC[year] :
        athletes_by_Year_NOC[year][NOC] = [dd]
      else :
        athletes_by_Year_NOC[year][NOC] += [dd]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for country in athletes_by_Year_NOC[year] :
    temp = [0,0,0]
    for person in athletes_by_Year_NOC[year][country] :
      if person["Medal"] == "Gold" :
        temp[0] += 1
      elif person["Medal"] == "Silver" :
        temp[1] += 1
      elif person["Medal"] == "Bronze" :
        temp[2] += 1
    tup = tuple(temp)
    medals[country] = tup
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  result = []
  for country in medals :
    lst = [-1*medals[country][0],-1*medals[country][1],-1*medals[country][2],country]
    result.append(lst)
  result.sort()
  k = {}
  i = 0
  while True :
    medal_i = str(result[i][0:3])
    if medal_i not in k :
      k[medal_i] = [[result[i][3],-1*result[i][0],-1*result[i][1],-1*result[i][2]]]
      i += 1
    else :
      k[medal_i] += [[result[i][3],-1*result[i][0],-1*result[i][1],-1*result[i][2]]]
      i += 1
    if len(k) == 5 :
      break
  count = 0
  for rank in k :
    for each in k[rank] :
      count += 1
      topfive.append(tuple(each))
    if count >= 5 :
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  check = False
  trend = []
  for year in athletes_by_Year_NOC :
    medals = [0,0,0]
    if int(year) in range(start,end+1) :
      if NOC in athletes_by_Year_NOC[year] :
        check = True
        for each in athletes_by_Year_NOC[year][NOC] :
          if each["Medal"] == "Gold" :
            medals[0] += 1
          elif each["Medal"] == "Silver" :
            medals[1] += 1
          elif each["Medal"] == "Bronze" :
            medals[2] += 1
      if check == True :
        trend.append((year,medals[0],medals[1],medals[2]))
        check = False
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  lst = []
  if year not in athletes_by_Year_NOC :
    return sports
  if NOC not in athletes_by_Year_NOC[year] :
    return sports
  for person in athletes_by_Year_NOC[year][NOC] :
    if person["Medal"] != "NA" :
      sports.add(person["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  lst = []
  for e in NOCs :
    temp = get_sports(athletes_by_Year_NOC, e, year) #ทุกกีฬา
    lst.append(temp)
  z = lst[0].intersection(lst[1])
  for i in range(len(NOCs)-2) :
    z = z.intersection(lst[i+2])
  sports = z
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530349721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0TypeError("object of type 'NoneType' has no len()")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1028, 'const': 1518, 'code+const': 2546}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    keys = data[0] ##['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC'7, 'Games', 'Year'9, 'Season', 'City', 'Sport', 'Event', 'Medal']
    for d in data[1:]:
        dik = {}
        for i in range(len(keys)):
           dik[keys[i]] = d[i]
        if dik['Year'] not in athletes_by_Year_NOC:
           t=1
           athletes_by_Year_NOC[d[9]] = {d[7]:[dik]}
        elif dik['NOC'] not in athletes_by_Year_NOC[dik['Year']]:
           t=2
           athletes_by_Year_NOC[d[9]][d[7]] = [dik]
        else:
            t=3
            athletes_by_Year_NOC[d[9]][d[7]].append(dik)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC in athletes_by_Year_NOC[year]:
        if NOC not in medals:
           medals[NOC] = [0,0,0]
        for d in athletes_by_Year_NOC[year][NOC]:
            ##print(d)
            if d['Medal'] == 'Bronze':
               medals[NOC][2] += 1
            if d['Medal'] == 'Silver':
               medals[NOC][1] += 1
            if d['Medal'] == 'Gold':
               medals[NOC][0] += 1
    for d in medals:
       medals[d] = tuple(medals[d])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    topfive = irs(medals)
    for i in range(len(topfive)):
       topfive[i] = tuple(topfive[i][1:])
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(end-start+1):
        m =[0,0,0]
        y = str(start+i)
        if y in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[y]:
                for n in athletes_by_Year_NOC[y][NOC]:
                    if n['Medal'] == 'Bronze':m[2] += 1
                    if n['Medal'] == 'Silver':m[1] += 1
                    if n['Medal'] == 'Gold':m[0] += 1
                ##print((y,m[0],m[1],m[2]))
                trend.append((y,m[0],m[1],m[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
       if NOC in athletes_by_Year_NOC[year]:
        for i in athletes_by_Year_NOC[year][NOC]:
            if i['Medal'] != 'NA':
                sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports=set()
    count =0
    for NOC in NOCs:
        if count == 0:
            sports = get_sports(athletes_by_Year_NOC, NOC, year)
        else:
            sports = sports.intersection(get_sports(athletes_by_Year_NOC, NOC, year))
        count += 1
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def irs(dik): 
    kid = []
    for k,v in dik.items():
       s = -v[0]*1000-v[1]-v[2]*0.001 #MCFC 4 LIV 1
       kid.append([s,k,v[0],v[1],v[2]])
    new=[]
    check=[]
    for k in sorted(kid):
        if k[0] not in check and len(new) < 5:
          check.append(k[0])   
        if k[0] in check:
            new.append(k)
        else:
           return new

6530360521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0UnboundLocalError("local variable 'invalid' referenced before assignment")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1196, 'const': 1133, 'code+const': 2329}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  d = {} ; dt = []
  for i in range(1,len(data)):
    for j in range(15):
        d[data[0][j]] = data[i][j]
    dt.append(d)
    d = {}
  athletes_by_Year_NOC  = {}
  for c in dt:
    if c['Year'] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[c['Year']] = ''
  dn = {} 
  for y in athletes_by_Year_NOC :
      for i in range(len(dt)):
          if dt[i]['Year'] == y:
              if dt[i]['NOC'] in dn:
                  dn[dt[i]['NOC']].append(dt[i])
              else:
                  dn[dt[i]['NOC']] = [dt[i]]    
      athletes_by_Year_NOC[y] = dn
      dn = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  dy =athletes_by_Year_NOC[year]
  medal = ['Gold','Silver','Bronze']
  t = [0,0,0] ; ts = ()
  for noc in dy:
    for i in range(len(dy[noc])):
      m = dy[noc][i]['Medal']
      if m in medal:
        j = medal.index(m)
        t[j] += 1
    ts = (t[0],t[1],t[2])
    medals[noc] = ts
    t = [0,0,0]
  return medals
#======================================
def get_top_five(medals):
  topfive = [] ; top = [] 
  for noc in medals:
    tn = medals[noc]
    t = (tn[0],tn[1],tn[2],noc)
    top.append(t)
  top = sorted(top)[::-1]
  k = 0 ; j = -1
  for i in range(len(top)):
    ts = top[i]
    ts1 = top[i-1]
    k += 1
    if k < 5:
      if ts[0] == ts1[0] and ts[1] == ts1[1] and ts[2] == ts1[2]:
        topfive.insert(-1,(ts[3],ts[0],ts[1],ts[2]))
      else:
        topfive.append((ts[3],ts[0],ts[1],ts[2]))
    if k == 5:
      topfive.append((ts[3],ts[0],ts[1],ts[2]))
      while True:
        for t in top[i+1:]:
          if ts[0] == t[0] and ts[1] == t[1] and ts[2] == t[2]:
            topfive.insert(j,(t[3],t[0],t[1],t[2]))
            j -= 1
          else:
            invalid = True
            break
        if invalid:
          break
    if k > 5:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if str(end) in athletes_by_Year_NOC:
    end += 1
  for y in range(start,end):
    y = str(y)
    if y not in athletes_by_Year_NOC :
      pass
    else:
      my = get_medals_by_team(athletes_by_Year_NOC,y)
      if NOC in my:
        m = my[NOC]
        trend.append((y,m[0],m[1],m[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC  in athletes_by_Year_NOC[year]:
      noc = athletes_by_Year_NOC[year][NOC]
      for c in noc:
        if c['Medal'] != 'NA':
          sports.add(c['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs = list(NOCs)
  sports = set(get_sports(athletes_by_Year_NOC,NOCs[0],year))
  for i in range(1,len(NOCs)):
    s2 = set(get_sports(athletes_by_Year_NOC,NOCs[i],year))
    sports = sports & s2
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530374321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1188, 'const': 1365, 'code+const': 2553}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data[1:] :
        if e[9] not in athletes_by_Year_NOC :
            athletes_by_Year_NOC[e[9]] = {e[7]:[add_data(e)]}    
        else :
            if e[7] in athletes_by_Year_NOC[e[9]] :
                athletes_by_Year_NOC[e[9]][e[7]].append(add_data(e))
            else :
                athletes_by_Year_NOC[e[9]][e[7]] = [add_data(e)]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for k in athletes_by_Year_NOC[year] :
        gold = 0
        silver = 0
        bronze = 0
        for j in athletes_by_Year_NOC[year][k] :
            if j["Medal"] == "Gold" :
                gold += 1
            elif j["Medal"] == "Silver" :
                silver += 1
            elif j["Medal"] == "Bronze" :
                bronze += 1
        medals[k] = (gold,silver,bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    num_of_medal = []
    for k in medals :
        medal = [-1*e for e in medals[k]]
        medal.append(k)
        num_of_medal.append(medal)
    num_of_medal.sort() 
    for e in num_of_medal[:5] :
        topfive.append(((e[3]),abs(e[0]),abs(e[1]),abs(e[2])))
    j = 4
    while num_of_medal[j][:3] == num_of_medal[j+1][:3] :
            topfive.append(((num_of_medal[j+1][3]),abs(num_of_medal[j+1][0]),abs(num_of_medal[j+1][1]),abs(num_of_medal[j+1][2])))
            j += 1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1) :
        if str(i) in athletes_by_Year_NOC :
            if NOC in athletes_by_Year_NOC[str(i)] :
                gold = 0
                silver = 0
                bronze = 0
                for k in athletes_by_Year_NOC[str(i)][NOC] :
                    if k["Medal"] == "Gold" :
                        gold += 1
                    elif k["Medal"] == "Silver" :
                        silver += 1
                    elif k["Medal"] == "Bronze" :
                        bronze += 1
                trend.append((str(i),gold,silver,bronze))
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            medal = {}
            for k in athletes_by_Year_NOC[year][NOC] :
                if k["Sport"] not in medal :
                    medal[k["Sport"]] = 0
                    if k["Medal"] != "NA" :
                        medal[k["Sport"]] += 1        
                else :
                    if k["Medal"] != "NA" :
                        medal[k["Sport"]] += 1
            for e in medal :
                if medal[e] != 0 :
                    sports.add(e)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    mem = []
    for e in NOCs :
        mem.append(get_sports(athletes_by_Year_NOC, e, year))   
    j = 0
    std = mem[j]
    while j != len(NOCs)-1 :
        A = mem[j+1].intersection(std)
        std = A
        j += 1
    sports = set(A)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def add_data(data) :
    dictout = {}
    headline = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal'] 
    for i in range(len(data)) :
        dictout[headline[i]] = data[i]
    return dictout

6530386921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1626, 'const': 1452, 'code+const': 3078}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in data[1:] : #อย่าลืมเปลี่ยน0เป็น1
        if not i[9] in athletes_by_Year_NOC.keys():
            athletes_by_Year_NOC.update({i[9]:{i[7]:[{'ID':i[0],'Name':i[1],'Sex':i[2],'Age':i[3],'Height':i[4],'Weight':i[5],'Team':i[6],'NOC':i[7],'Games':i[8],'Year':i[9],'Season':i[10],'City':i[11],'Sport':i[12],'Event':i[13],'Medal':i[14]}]}})
        elif i[9] in athletes_by_Year_NOC.keys():
            if not i[7] in athletes_by_Year_NOC[i[9]].keys():
                athletes_by_Year_NOC[i[9]].update({i[7]:[{'ID':i[0],'Name':i[1],'Sex':i[2],'Age':i[3],'Height':i[4],'Weight':i[5],'Team':i[6],'NOC':i[7],'Games':i[8],'Year':i[9],'Season':i[10],'City':i[11],'Sport':i[12],'Event':i[13],'Medal':i[14]}]})
            elif i[7] in athletes_by_Year_NOC[i[9]].keys():
                athletes_by_Year_NOC[i[9]][i[7]].append({'ID':i[0],'Name':i[1],'Sex':i[2],'Age':i[3],'Height':i[4],'Weight':i[5],'Team':i[6],'NOC':i[7],'Games':i[8],'Year':i[9],'Season':i[10],'City':i[11],'Sport':i[12],'Event':i[13],'Medal':i[14]})
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for k,v in  athletes_by_Year_NOC[year].items() :
        for j in v :
            if not k in medals.keys() :
                medals.update({k:[0,0,0]})
                if j['Medal']=="Gold" :
                    medals[k][0]+=1
                elif j['Medal']=="Silver" :
                    medals[k][1]+=1
                elif j['Medal']=="Bronze" :
                    medals[k][2]+=1
            elif k in medals.keys():
                if j['Medal'] == "Gold":
                    medals[k][0] += 1
                elif j['Medal'] == "Silver":
                    medals[k][1] += 1
                elif j['Medal'] == "Bronze":
                    medals[k][2] += 1
    for a,b in medals.items() :
        medals[a]=tuple(b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    data=medals
    s = []
    for i in data:
        s.append((-data[i][0], -data[i][1], -data[i][2], i))
    s.sort()
    topfivesub = []
    for i in s:
        topfivesub.append((i[3], -i[0], -i[1], -i[2]))
    i = 4
    topfives=[]
    topfives.append(topfivesub[0])
    topfives.append(topfivesub[1])
    topfives.append(topfivesub[2])
    topfives.append(topfivesub[3])
    if topfivesub[i][1:] == topfivesub[i + 1][1:]:
        while topfivesub[i][1:] == topfivesub[i + 1][1:]:
            topfives.append(topfivesub[i])
            topfives.append(topfivesub[i+1])
            i += 1
    else:
        topfives.append(topfivesub[4])
    topfives=set(topfives)
    topfives=list(topfives)
    b=[]
    for i in topfives:
        b.append((-i[1], -i[2], -i[3], i[0]))
    b.sort()
    for i in b:
        topfive.append((i[3], -i[0], -i[1], -i[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if start%2==1 :
        start+=1
    if end%2==1 :
        end-=1
    for i in range(start,end+1,2) :
        if str(i) in athletes_by_Year_NOC.keys() :
            if NOC in athletes_by_Year_NOC[str(i)].keys() :
                trend.append((str(i),)+get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if str(year) in athletes_by_Year_NOC.keys() :
        if NOC in athletes_by_Year_NOC[str(year)].keys() :
            for i in athletes_by_Year_NOC[str(year)][NOC] :
                if i['Medal'] !="NA" :
                    sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    #sports = set()
    sub=[]
    for i in NOCs :
        sub.append(get_sports(athletes_by_Year_NOC,i, year))
    sports = sub[0].intersection(*sub[1:])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530387521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1348, 'const': 1273, 'code+const': 2621}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  posi = {}
  for i in range(len(data)):
    if i == 0 :
        pass
    else:
        if data[i][9] in posi:
            posi[data[i][9]].append(i)
        else:
            posi[data[i][9]] = [i]  
  for y in posi:
    NOCF = {}
    for p in posi[y]:
        app = {}
        for e in range(15):
            app[data[0][e]] = data[int(p)][e]
        if data[p][7] in NOCF:
          NOCF[data[p][7]].append(app)
        else:
          NOCF[data[p][7]] = [app] 
    athletes_by_Year_NOC[y] = NOCF
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for n  in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for i in range(len(athletes_by_Year_NOC[year][n])):
        if str(athletes_by_Year_NOC[year][n][i]['Medal']) == 'Gold':
          g += 1
        elif str(athletes_by_Year_NOC[year][n][i]['Medal']) == 'Silver':
          s += 1
        elif  str(athletes_by_Year_NOC[year][n][i]['Medal']) == 'Bronze':
          b += 1
        else:
          pass
    medals[n] = (g,s,b)  
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  M = []
  for k in medals:
    x = list(medals[k])
    x[0] = x[0]*-1
    x[1] = x[1]*-1
    x[2] = x[2]*-1
    M.append([x,k]) 
  M.sort()
  for i in range(5):
    topfive.append((M[i][1],M[i][0][0]*-1,M[i][0][1]*-1,M[i][0][2]*-1))
  n = 4
  while True:
    if M[n][0] == M[n+1][0]:
      topfive.append((M[n+1][1],M[n+1][0][0]*-1,M[n+1][0][1]*-1,M[n+1][0][2]*-1))
      n += 1
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2 == 0:
    pass
  else:
    start += 1
  if end%2 ==0:
    end += 1
  else:
    pass
  for y in range(start,end,2):
    medals = {}
    g = 0
    s = 0
    b = 0
    if str(y) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(y)] :
      for i in range(len(athletes_by_Year_NOC[str(y)][NOC])):
        if str(athletes_by_Year_NOC[str(y)][NOC][i]['Medal']) == 'Gold':
            g += 1
        elif str(athletes_by_Year_NOC[str(y)][NOC][i]['Medal']) == 'Silver':
            s += 1
        elif  str(athletes_by_Year_NOC[str(y)][NOC][i]['Medal']) == 'Bronze':
            b += 1
        else:
            pass
      medals[NOC] = (g,s,b)
      trend.append((str(y),)+medals[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if int(year) in [2000,2002,2004,2006,2008,2010,2012,2014,2016]:
    if NOC in athletes_by_Year_NOC[year] :
      for i in range(len(athletes_by_Year_NOC[year][NOC])):
        if athletes_by_Year_NOC[year][NOC][i]['Medal'] != 'NA':
          sports.add(athletes_by_Year_NOC[year][NOC][i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  N = len(NOCs)
  t = 0
  for n in NOCs:
    if n in athletes_by_Year_NOC[year] :
      if t == 0 :
        sports = get_sports(athletes_by_Year_NOC,n,year)
        t += 1
      else:
        ns = get_sports(athletes_by_Year_NOC,n,year)
        sports = sports.intersection(ns)
    else:
      sports = set()
      t += 1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530399021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1020, 'const': 1104, 'code+const': 2124}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)) :
    ans = {}
    for j in range(len(data[0])) :
      ans[data[0][j]] = data[i][j]
    year = data[i][9]
    noc = data[i][7]
    if year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC [year] = {}
    if noc not in athletes_by_Year_NOC[year] :
      athletes_by_Year_NOC[year][noc] =  []
    athletes_by_Year_NOC[year][noc].append(ans)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  x = athletes_by_Year_NOC[year]
  for i in x :
    medal = [0,0,0]
    for j in x[i] :
      if  (j['Medal']) == 'Gold' :
        medal[0]  = medal[0] + 1 
      if (j['Medal']) == 'Silver' :
        medal[1] = medal[1] + 1
      if (j['Medal']) == 'Bronze' :
        medal[2] = medal[2] +1
      ans = (medal[0],medal[1],medal[2])
      medals[i] = (ans)
  return medals
#======================================
def get_top_five(medals):
    topfive = []
    topfive2 =[]
    x = []
    for i in medals:
        ans = (medals[i][0],medals[i][1],medals[i][2],i)
        x.append(ans)
    x.sort()
    x = x[::-1]
    while True:
        l = [x[0][3]]
        m = x[0][:3]
        p = x[0][:3]
        x = x[1:]
        while True:
            if x[0][:3] != p:
                l.sort()
                ans = []
                for i in l:
                    ans.append(list(m)+[i])
                topfive2 = topfive2+ans
                break
            else:
                m = x[0][:3]
                l.append(x[0][3])
                x = x[1:]
        if len(topfive2) >= 5 or len(x) == 0:
            break
    for i in topfive2 :      
        pun = (i[3],i[0],i[1],i[2])
        topfive.append(pun)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1) :
    i = str(i)
    x = ()
    if i in athletes_by_Year_NOC :
      if NOC in athletes_by_Year_NOC[i] :
        m = get_medals_by_team(athletes_by_Year_NOC ,i)
        y = m[NOC]
        x = (i,y[0],y[1],y[2])
        trend.append(x)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  start = int(year)
  end = int(year)
  x = get_medals_trend(athletes_by_Year_NOC, NOC, start, end)
  if x != [] :
    y =  (athletes_by_Year_NOC[year][NOC])
    for i in y :
      if i['Medal'] != 'NA' :
        sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  for NOC in NOCs[1:]:
    x = get_sports(athletes_by_Year_NOC, NOC, year)
    sports = x.intersection(sports)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530412521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1028, 'const': 1317, 'code+const': 2345}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    year = data[i][9] 
    NOC = data[i][7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {NOC:[]}
    elif NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] =[]
    insideData = {}
    for j in range(len(data[i])):
      insideData[data[0][j]]=data[i][j]
    athletes_by_Year_NOC[year][NOC].append(insideData) 
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year]:
    eachMedals = [0,0,0]
    for athlete in athletes_by_Year_NOC[year][NOC]:
      medal = athlete['Medal']
      if medal == 'Gold':
          eachMedals[0] += 1
      elif medal == 'Silver':
          eachMedals[1] += 1
      elif medal == 'Bronze':
          eachMedals[2] += 1
    medals[NOC] = tuple(eachMedals)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  n = 5
  medals_sort =  []
  for NOC in medals:
    medals_sort.append([-medals[NOC][0],-medals[NOC][1],-medals[NOC][2],NOC])
  medals_sort.sort()
  fifth = (medals_sort[4][0],medals_sort[4][1],medals_sort[4][2])
  while medals_sort[n][0] == fifth[0] and medals_sort[n][1] == fifth[1] and medals_sort[n][2] == fifth[2]:
    n += 1
  for i in range(n):
    topfive.append(tuple([medals_sort[i][3],-medals_sort[i][0],-medals_sort[i][1],-medals_sort[i][2]]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]:
      eachMedals = [0,0,0]
      for athlete in athletes_by_Year_NOC[str(year)][NOC]:
        medal = athlete['Medal']
        if medal == 'Gold':
            eachMedals[0] += 1
        elif medal == 'Silver':
            eachMedals[1] += 1
        elif medal == 'Bronze':
            eachMedals[2] += 1
      trend.append((str(year),eachMedals[0],eachMedals[1],eachMedals[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for athlete in athletes_by_Year_NOC[year][NOC]:
      if athlete['Medal'] != 'NA':
        sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  i=0
  for NOC in NOCs:
    if i == 0:
      sports = get_sports(athletes_by_Year_NOC,NOC,year)
      i = 1
    else:
      sports = sports & get_sports(athletes_by_Year_NOC,NOC,year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530438921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 950, 'const': 1076, 'code+const': 2026}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data:
    if i == data[0]: pass
    else:
      d = {}
      for j in range(len(i)): d[data[0][j]] = i[j]
      y = i[9]; n = i[7]
      if y not in athletes_by_Year_NOC:
        temp = {}
        temp[n] = []
        athletes_by_Year_NOC[y] = temp
      elif n not in athletes_by_Year_NOC[y]:
        athletes_by_Year_NOC[y][n] = []
      athletes_by_Year_NOC[y][n].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  if year not in athletes_by_Year_NOC :
      return {}
  else :
     g = 0
     s = 0
     b = 0
     nub = {}
     for i in athletes_by_Year_NOC[year].keys() :
         for e in athletes_by_Year_NOC[year][i]:
           if e['Medal'] == 'Gold' :
               g += 1
           elif e['Medal'] == 'Silver' :
               s += 1
           elif e['Medal'] == 'Bronze' :
               b += 1
         tu = (g,s,b)
         nub[i] = tu
         g = 0
         s = 0
         b = 0
     return nub
#======================================
def get_top_five(medals):
    a = []
    ans = []
    ans1 = []
    re = []
    re1 = []
    for i in medals.keys() :
        a.append(medals[i])
    a.sort(reverse = True)
    for i in range(5) :
        ans.append(a[i])
    ans1.append(ans[0])
    ans1.append(ans[1])
    ans1.append(ans[2])
    ans1.append(ans[3])
    for i in medals :
        if medals[i] == ans[-1] :
           ans1.append(medals[i])
    g = sorted(medals)
    for i in ans1 :
        for e in g :
            if medals[e] == i :
                re.append((e,i[0],i[1],i[2]))
    for i in re :
        if i not in re1 :
            re1.append(i)
    return re1
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  a = []
  for i in range(start,end+1):
     m = get_medals_by_team(athletes_by_Year_NOC,str(i))
     if NOC not in  m :pass
     else :
       b = m[NOC]
       a.append((i,b[0],b[1],b[2]))
  return a
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    ans = set()
    if year not in athletes_by_Year_NOC :
        return set()
    if NOC not in athletes_by_Year_NOC[year] :
        return set()
    for i in athletes_by_Year_NOC[year][NOC] :
      if i['Medal'] == 'Gold' or i['Medal'] == 'Silver' or i['Medal'] == 'Bronze':
            ans.add(i['Sport'])
    return ans
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    keb = []
    for i in NOCs :
        a = get_sports(athletes_by_Year_NOC, i, year)
        keb.append(a)
    a = keb[0]
    for i in range(len(keb)) :
        a = a.intersection(keb[i])
    return a
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532016021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1230, 'const': 976, 'code+const': 2206}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  #{ year:  {NOC: [ {'ID':..., 'Name': ..., ... }, ... ], ...}, ... }
  #เอาใหม่
  DD=data[1:]
  for i in DD:
    year=i[9]
    NOC=i[7]
    NOC_data={}
    for j in range(len(i)):
        NOC_data[data[0][j]]= i[j]
    if not year in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year]={}
      athletes_by_Year_NOC[year][NOC]=[NOC_data]
    elif not NOC in athletes_by_Year_NOC[year] : 
      athletes_by_Year_NOC[year][NOC]=[NOC_data]
    else: athletes_by_Year_NOC[year][NOC].append(NOC_data)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  M={'Gold':0, 'Silver':1, 'Bronze':2}
  if not year in athletes_by_Year_NOC: medals = {}
  else:
    for NOC in athletes_by_Year_NOC[year]:
      medals[NOC]=(0,0,0)
      for i in athletes_by_Year_NOC[year][NOC]: #{'ID':..., 'Name': ..., ... }
        if i['Medal']=='NA': continue
        else:
          d = M[i['Medal']]
          medals[NOC]=medals[NOC][:d]+(medals[NOC][d]+1,)+medals[NOC][d+1:]
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  T=[]
  #หาทองสุด
  G = num_medals_NOC(medals,0)
  wg = sorted(G)[::-1]
  n=0
  k=0
  while n <= 5 :
    n+=len(G[wg[k]])
    #for i in G[wg[k]] : T.append(i)
    S = for_medal(medals,G[wg[k]],1)
    ws = sorted(S)[::-1]
    for i in ws:
      B = for_medal(medals,S[i],2)
      wb = sorted(B)[::-1]
      for j in wb:
        if len(B[j]) == 1 : topfive.append( (B[j][0],) + medals[B[j][0]] )
        else: 
          for p in sorted(B[j]):
            topfive.append( (p,) + medals[p] )
    k+=1
  for i in range(5,len(topfive)):
    if topfive[i-1][1:]==topfive[i][1:]: T=topfive[:i+1]
    else: T=topfive[:i] ; break
  topfive = T
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    year=str(i)
    if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
        t=get_medals_by_team(athletes_by_Year_NOC, year)
        trend.append( (year,) + t[NOC] )
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if not year in athletes_by_Year_NOC: sports = set()
  elif not NOC in athletes_by_Year_NOC[year]: sports = set()
  else:
    t=get_medals_by_team(athletes_by_Year_NOC, year)
    if t[NOC] == (0,0,0): sports = set()
    else:
      for DATA in athletes_by_Year_NOC[year][NOC]:
        if DATA['Medal'] != 'NA':
          sports.add(DATA['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s=[]
  for NOC in NOCs:
    a=get_sports(athletes_by_Year_NOC, NOC, year)
    s.append(a)
  sports = s[0]
  for i in range(len(s)):
    sports = sports & s[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def for_medal(medals,list_of_NOC,k):
  MD={}
  for NOC in list_of_NOC: #['FIN','ENG','IND']
    num = medals[NOC][k]
    if medals[NOC][k] in MD:
      MD[num].append(NOC)
    else: MD[num]=[NOC]
  return MD #{3:['FIN','ENG'], 6:['IND']}
def num_medals_NOC(medals,k):
  MD={}
  for NOC in medals: #{'FIN': (3, 1, 1), 'NOR': (20, 4, 19)}
    if medals[NOC][k] in MD:
      MD[medals[NOC][k]].append(NOC) # G = {2:['FIN','ENG'], 6:['IND']}
    else: MD[medals[NOC][k]]=[NOC]
  return MD

6532049821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type0.0
[[<class 'list'>, <class 'tuple'>, <class 'instr'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1296, 'const': 1091, 'code+const': 2387}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      if data[i][9] not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[data[i][9]]={}
      if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
          info={}
          for j in range(15):
              info[data[0][j]]=data[i][j] 
          athletes_by_Year_NOC[data[i][9]][data[i][7]].append(info)
      else:
          athletes_by_Year_NOC[data[i][9]][data[i][7]]=[]
          info={}
          for j in range(15):
              info[data[0][j]]=data[i][j]  
          athletes_by_Year_NOC[data[i][9]][data[i][7]].append(info)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC:
        return (medals)
    for i in athletes_by_Year_NOC[year]:
        g,s,b=0,0,0
        for j in athletes_by_Year_NOC[year][i]:
            if j['Medal']=='Gold':
                g+=1
            elif j['Medal']=='Silver':
                s+=1
            elif j['Medal']=='Bronze':
                b+=1
        medals[i]=(g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive=[]
    result = list(medals.items())
    for i in range(len(result)):
        for j in range(i + 1, len(result)):
            if result[j][1][0] > result[i][1][0]:
                result[i], result[j] = result[j], result[i]
            elif result[j][1][0] == result[i][1][0]:
                if result[j][1][1] > result[i][1][1]:
                    result[i], result[j] = result[j], result[i]
                elif result[j][1][1] == result[i][1][1]:
                    if result[j][1][2] > result[i][1][2]:
                        result[i], result[j] = result[j], result[i]
                    elif result[j][1][2] == result[i][1][2]:
                        if result[j][0] < result[i][0]:
                            result[i], result[j] = result[j], result[i]
    tmp=-1
    count=0
    for country,medals in result:
        if count>=5 and medals!=tmp:
            break
        topfive.append((country,medals[0],medals[1],medals[2]))
        tmp=medals
        count+=1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        if str(year) in athletes_by_Year_NOC :
            if NOC in athletes_by_Year_NOC[str(year)]:
                medal = get_medals_by_team(athletes_by_Year_NOC, str(year))
                trend.append((year,medal[NOC][0],medal[NOC][1],medal[NOC][2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
        return set()  
    for i in athletes_by_Year_NOC[year][NOC]:
        if 'Sport' in i and i['Medal'] != 'NA':
            sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    m = {}
    for i in NOCs:
        for j in athletes_by_Year_NOC[year].get(i,[]):
            if 'Sport' in j and j['Medal'] != 'NA':
                tmp=j['Sport']
                if tmp in m:
                    m[tmp].add(i)
                else:
                    m[tmp]=set([i])
    for i,j in m.items():
        if len(j)==len(NOCs):
            sports.add(i)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532053221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1216, 'const': 1181, 'code+const': 2397}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  ans = {}
  for i in range(1,len(data)):
      if (data[i][9] not in ans):
          ans[data[i][9]] = dict()
      if (data[i][7] not in ans[data[i][9]]):
          ans[data[i][9]][data[i][7]] = []
      p={}
      for j in range(15):
          x=data[0][j]
          p[x]=data[i][j]
      ans[data[i][9]][data[i][7]].append(p)
  return ans
  #======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for c in athletes_by_Year_NOC[year]: #c='THA'
      b=0
      g=0
      s=0
      for h in athletes_by_Year_NOC[year][c]: #h={'id':...}
        if h['Medal']=='Gold':
          g+=1
        elif h['Medal']=='Silver':
          s+=1
        elif h['Medal']=='Bronze':
          b+=1
      e=[g,s,b]
      medals[c] = tuple(e)
  return medals
#======================================
def get_top_five(medals):#medals=dict {'FIN': (3, 1, 1), 'NOR': (20, 4, 19), 
  sorted_medals=[]
  for c in medals:#c=country
      sorted_medals.append((medals[c],c))#[(3,1,1),Fin]
  sorted_medals.sort(reverse=True)
  ans=sorted_medals[:5]
  i=4
  while sorted_medals[i][0]==sorted_medals[i+1][0]:
      ans.append(sorted_medals[i+1])
      i+=1
  top=[]
  for u in range(len(ans)):
      #print(ans[u][1])
      top.append((ans[u][1],ans[u][0]))#country,()
  r={}
  for h in range(len(top)):
      if top[h][1] not in r:
          r[top[h][1]]=[]
      if top[h][0] not in r[top[h][1]]:
          #print(top[h][0])#country
          r[top[h][1]].append(top[h][0])
      r[top[h][1]].sort()
  ansans=[]
  for y in r:
      for t in r[y]:
          p,f,n=y
          #print(p) 
          ansans.append((t,p,f,n))
  return ansans
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  ansans=[]
  if start%2!=0:
      start+=1
  if end%2!=0:
      end-=1
  for j in range(start,end+1):#j=2000 2001
      #print(athletes_by_Year_NOC[j])
      g=0
      b=0
      s=0
      j=str(j)
      if j not in athletes_by_Year_NOC:continue
      else:
        for u in athletes_by_Year_NOC[j]:#u=country
          if u==NOC:
              #print(len(athletes_by_Year_NOC[j][u]),j)
              for l in range(len(athletes_by_Year_NOC[j][u])):#l=ตัวเลขในlist
                    #
                    if athletes_by_Year_NOC[j][u][l]['Medal']=='Gold':
                        g+=1
                    elif athletes_by_Year_NOC[j][u][l]['Medal']=='Silver':
                        s+=1
                    elif athletes_by_Year_NOC[j][u][l]['Medal']=='Bronze':
                        b+=1
              e=[j,g,s,b]
              ans=tuple(e)
              ansans.append(ans)
  return ansans
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if  year not in athletes_by_Year_NOC:
    return sports
  if  NOC not in athletes_by_Year_NOC[year]:
    return sports
  for p in athletes_by_Year_NOC[year][NOC]:
    if p['Medal']!='NA':
      sports.add(p['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  ans=[]
  for u in NOCs:
    if u not in athletes_by_Year_NOC[year]: #u=country
      return sports
    else:
        m=get_sports(athletes_by_Year_NOC,u,year)
        ans.append(m)
  sports=ans[0].intersection(*ans)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
#d = convert_to_dict(data)
#print(len(d['2000']['THA']))
#for i in range(5):
 #print(d['2000']['THA'][i])
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(len(m))
# print(m)
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(get_top_five(m))
# d_mock = convert_to_dict(data_mock)
# m_mock = get_medals_by_team(d_mock, '2010')
# print(get_top_five(m_mock))
# #d = convert_to_dict(data)
# #print('USA')
# print(get_medals_trend(d, 'USA', 2001, 2015))
# print('THA')
# print(get_medals_trend(d, 'THA', 2000, 2016))
# d = convert_to_dict(data)
# print(get_sports(d, 'THA', '2000'))
# print(get_sports(d, 'THA', '2010'))
# print(get_sports(d, 'THA', '2020'))
# print(get_sports(d, 'SOM', '2000'))
# print(get_sports(d, 'THA', '2008'))
# print(get_sports(d, 'VIE', '2008'))
# print(get_sports(d, 'DEN', '2008'))
# print(get_sports(d, 'XXX', '2000'))
#d = convert_to_dict(data)
#print(get_common_sports(d, {'THA','VIE'}, '2008'))
#print(get_common_sports(d, {'THA','VIE','DEN'}, '2008'))
#print(get_common_sports(d, {'THA','XXX'}, '2008'))

6532081821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_010.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
get_common_sports_020.5
[[<class 'set'>, 'F'], ['E', 'H', 'I']]
bytecount: {'code': 928, 'const': 904, 'code+const': 1832}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    b = []
    for i in range(1,len(data)):
        a = {}
        for e in range(len(data[0])):
            a[data[0][e]] = data[i][e]
        #b.append(a)
        noc = data[i][7]
        year = data[i][9]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {noc : [a]}
        else :
            if noc not in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][noc] = [a]
            else:
                athletes_by_Year_NOC[year][noc].append(a)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for noc in athletes_by_Year_NOC[year] :
            medals_noc = {noc : [0, 0, 0]}
            for per in athletes_by_Year_NOC[year][noc] :
                medal = per['Medal']
                if medal in 'Gold':
                    medals_noc[noc][0] += 1
                elif medal in 'Silver':
                    medals_noc[noc][1] += 1
                elif medal in 'Bronze':
                    medals_noc[noc][2] += 1
                else:
                    pass
            medals[noc] = tuple(medals_noc[noc]) 
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    top_all = {}
    for n,m in medals.items():
        if m not in top_all:
            top_all[m] = [n]
        else :
            top_all[m].append(n)
    y = sorted(top_all)[::-1]
    i = 0
    count = 0
    if y != []:
        while count < 5 :
            noc = top_all[y[i]]
            for c in sorted(noc) :
                topfive.append((c,)+y[i])
                count += 1
            i += 1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(i)]:
                infor = (str(i),) + get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
                trend.append(infor)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    s = []
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i['Medal'] != 'NA':
                   for e in range(len(athletes_by_Year_NOC)):
                       s.append(i['Sport'])
    sports = set(s)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    s = []
    if year in athletes_by_Year_NOC:
        for i in NOCs:
            if i in athletes_by_Year_NOC[year]:
                s.append(list(get_sports(athletes_by_Year_NOC, i, year)))
    if s != [] :
        for i in range(len(s)-1):
            sports = set(s[i]) & set(s[i+1])
    else :
        sports = set()
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532091021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1046, 'const': 1159, 'code+const': 2205}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    athletes = [{data[0][i]: athlete[i] for i in range(len(athlete))} for athlete in data[1:]] # make list of list of athletes to list of dict of athletes
    athletes_by_NOC = {athlete['NOC']: [] for athlete in athletes} # make empty dict of list that has NOC as a key
    athletes_by_YearNOC = {(athlete['Year'], athlete['NOC']): [] for athlete in athletes} # make empty dict of list that has tuple of Year and NOC as a key
    athletes_by_Year_NOC = {athlete['Year']: {} for athlete in athletes} # make empty dict of list to store by Year, NOC
    for athlete in athletes : # store athletes by Year and NOC
        athletes_by_NOC[athlete['NOC']].append(athlete)
        athletes_by_YearNOC[(athlete['Year'], athlete['NOC'])].append(athlete)
    for year in athletes_by_Year_NOC : # store athletes by Year First then by NOC
        for NOC in athletes_by_NOC :
            if (year, NOC) in athletes_by_YearNOC :
                athletes_by_Year_NOC[year][NOC] = athletes_by_YearNOC[(year,NOC)]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC :
        return medals
    NOCs = athletes_by_Year_NOC[year] # get NOCs for all country that participate in that year
    for NOC, athletes in NOCs.items() : # iterate over all NOCs
        all_medals = [athlete['Medal'] for athlete in athletes] # get all medals got by said NOC
        medals[NOC] = (all_medals.count('Gold'), all_medals.count('Silver'), all_medals.count('Bronze')) # count medals and store in tuple
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    sorted_medals = sorted([(NOC,) + medal for NOC, medal in medals.items()], key = lambda x: (tuple([-1*y for y in x[1:]]) + (x[0],)))
    topfive = sorted_medals[:5] ; sorted_medals = sorted_medals[5:]
    while sorted_medals[0][1:] == topfive[-1][1:] :
        topfive.append(sorted_medals.pop(0))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    trend = [(year,) + get_medals_by_team(athletes_by_Year_NOC, year)[NOC] for year in athletes_by_Year_NOC              if NOC in athletes_by_Year_NOC[year] and start <= int(year) <= end]
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC :
        return sports
    if NOC not in athletes_by_Year_NOC[year] :
        return sports
    sports.update(set([athlete['Sport'] for athlete in athletes_by_Year_NOC[year][NOC] if athlete['Medal'] != 'NA']))
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if year not in athletes_by_Year_NOC :
        return sports
    all_sports = [get_sports(athletes_by_Year_NOC, NOC, year) for NOC in NOCs]
    for sport in all_sports[1:] :
        all_sports[0].intersection_update(sport)
    sports = all_sports[0]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532105221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0UnboundLocalError("local variable 'a' referenced before assignment")
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 998, 'const': 1028, 'code+const': 2026}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    a = {}
    for e in data[1:] :
        year = e[9]
        noc = e[7]
        if year not in a :
            a[year] = {}
        if noc not in a[year] :
            a[year][noc] = []
        b = len(data[0])
        c = {}
        for i in range(b) :
            c[data[0][i]] = e[i]
        a[year][noc].append(c)  
    return a
#======================================
def get_medals_by_team(data, year):
    a = data[year]
    medal = {}
    for noc in a :
        pv = a[noc]
        b = len(pv)
        m1 = [0,0,0]
        for i in range(b) :
            m = pv[i]["Medal"]
            if m == "Gold" :
                m1[0] +=1
            elif m == "Silver" :
                m1[1] +=1
            elif m == "Bronze" :
                m1[2] +=1
            else :
                pass
        m2 = tuple(m1)
        medal[noc] = m2
    return medal
#======================================
def get_top_five(medals):
    a1 = []
    for e in medals :
        b = medals[e]
        a1.append([b,e])
    a1.sort(reverse=True)
    for i in range(len(a1)) :
        for j in range(i,len(a1)) :
            if a1[i][0]==a1[j][0] :
                if a1[i][1] > a1[j][1] :
                    a1[i],a1[j]=a1[j],a1[i]
    t = a1[0:5]
    if len(a1) < 5 :
        pass
    elif len(a1) > 5 :
        a=[]
        for i in range(4,len(a1)-1) :
            if a1[i][0] == a1[i+1][0] :
                a.append(a1[i+1])
            else :
                break
    t=t+a
    x=[]
    for a,b in t :
        a=list(a)
        a.insert(0,b)
        a=tuple(a)
        x.append(a)
    return x
#======================================
def get_medals_trend(data, NOC, start, end):
    x = []
    for i in range(start,end+1) :
        if str(i) in data :
            a = get_medals_by_team(data,str(i))
            if NOC in a :
                b = a[NOC]
                b = list(b)
                b.insert(0,str(i))
                b = tuple(b)
                x.append(b)
    return x
#======================================
def get_sports(data, NOC, year):
    t=set()
    if year in data :
        if NOC in data[year] :
            a = data[year][NOC]
            for e in a :
                if e["Medal"] == "NA" :
                    pass
                else :
                    t.add(e["Sport"])
    return t
#======================================
def get_common_sports(data, NOCs, year):
    c = []
    for e in NOCs :
        a = get_sports(data, e, year)
        c.append(a)
    first=c[0]
    for i in range(1,len(c)):
        first=first.intersection(c[i])
    return  first
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532113221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 842, 'const': 1249, 'code+const': 2091}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  col = data[0]
  for i in range(1, len(data)):
    year = data[i][9]
    NOC = data[i][7]
    if not year in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if not NOC in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    record = {}
    for j in range(len(col)):
      record[col[j]] = data[i][j]
    athletes_by_Year_NOC[year][NOC].append(record)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for team in athletes_by_Year_NOC[year]:
    teamMedal = {'Gold': 0, 'Silver': 0, 'Bronze': 0, 'NA': 0}
    for atheletes in athletes_by_Year_NOC[year][team]:
      teamMedal[atheletes['Medal']] += 1
    medals[team] = (teamMedal['Gold'], teamMedal['Silver'], teamMedal['Bronze'])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  total = []
  for noc,medal in medals.items():
    total.append((-medal[0],-medal[1],-medal[2],noc))
  total.sort()
  old = []
  for e in total:
    old.append((e[3],-e[0],-e[1],-e[2]))
  c = 5
  while old[c-1][1:4] == old[c][1:4]:
      c +=1
  for i in range(c):
    topfive.append((old[i]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]:
        teamMedal = {'Gold': 0, 'Silver': 0, 'Bronze': 0,'NA':0}
        for atheletes in athletes_by_Year_NOC[str(i)][NOC]:
          teamMedal[atheletes['Medal']] += 1
        trend.append((str(i),teamMedal['Gold'],teamMedal['Silver'],teamMedal['Bronze']))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for atheletes in athletes_by_Year_NOC[year][NOC]:
      if atheletes['Medal'] != 'NA':
        sports.add(atheletes['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports = get_sports(athletes_by_Year_NOC, tuple(NOCs)[0], year)
  NOCs = tuple(NOCs)
  for e in NOCs:
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, e, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532139621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1048, 'const': 1213, 'code+const': 2261}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        if not data[i][9] in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {}
        if not data[i][7] in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]] = [] 
            x = {}
            for j in range(15):
                x[data[0][j]] = data[i][j]
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(x)
        else:
            x = {}
            for j in range(15):
                x[data[0][j]] = data[i][j]
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(x)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for e in athletes_by_Year_NOC[year]:
        gold = 0
        silver = 0
        bronze = 0
        for m in athletes_by_Year_NOC[year][e]:
            if m["Medal"] == "Gold":
                gold += 1
            elif m["Medal"] == "Silver":
                silver += 1
            elif m["Medal"] == "Bronze":
                bronze += 1
            medals[e] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    for key,value in medals.items():
        topfive.append((value,key))
    topfive.sort(reverse = True)
    a = topfive[:5]
    k = 5
    sig = a[-1][0]
    while topfive[k][0] == sig:
        a.append(topfive[k])
        k += 1
    dum = []
    for e in a:
        dum.append([-e for e in e[0] ])
        dum[-1].append(e[1])
    dum.sort()
    ans = []
    for e in dum:
        ans.append((e[-1],-e[-4],-e[-3],-e[-2]))
    return ans
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
        if str(y) in athletes_by_Year_NOC:
            g = 0
            s = 0
            b = 0
            if NOC in athletes_by_Year_NOC[str(y)]:
                for m in athletes_by_Year_NOC[str(y)][NOC]:
                    if m["Medal"] == "Gold":
                        g += 1
                    elif m["Medal"] == "Silver":
                        s += 1
                    elif m["Medal"] == "Bronze":
                        b += 1
                trend.append((str(y),g,s,b))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if not year in athletes_by_Year_NOC or not NOC in athletes_by_Year_NOC[year]:
        return set()
    for e in athletes_by_Year_NOC[year][NOC]:
        if e["Medal"] != "NA":
            sports.add(e["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    #create universe set
    U = set()
    for e in NOCs:
        U = U | get_sports(athletes_by_Year_NOC, e,year)
    sports = U
    for e in NOCs:
        sports = sports &  get_sports(athletes_by_Year_NOC, e,year)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532168821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1020, 'const': 1100, 'code+const': 2120}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    noc = {}
    d = {}
    k = 0
    for i in data[1:] :
        for j in data[0] :
                d[j] = i[k]
                k+=1
        k = 0
        if i[9] not in athletes_by_Year_NOC :
          athletes_by_Year_NOC[i[9]] = [d]
        else :
          athletes_by_Year_NOC[i[9]] += [d]
        d = {}
    for i in athletes_by_Year_NOC :
        for j in athletes_by_Year_NOC[i] :
          if j['NOC'] not in noc :
            noc[j['NOC']] = [j]
          else :
            noc[j['NOC']] += [j]
        athletes_by_Year_NOC[i] = noc
        noc = {}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  Gold, Silver, Bronze = 0, 0, 0
  for i in athletes_by_Year_NOC[year] :
    for j in athletes_by_Year_NOC[year][i] :
      if i not in medals :
        medals[i] = [j['Medal']]
      else :
        medals[i] += [j['Medal']]
  for i in medals :
    for j in medals[i] :
      if j == 'Gold' :
        Gold += 1
      elif j == 'Silver' :
        Silver += 1
      elif j == 'Bronze' :
        Bronze +=1
    medals[i] = (Gold, Silver, Bronze)
    Gold, Silver, Bronze = 0, 0, 0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  s = sorted(medals.items(), key=lambda x: x[1])
  for i in s :
    topfive += [(i[0],i[1][0],i[1][1],i[1][2])]
  if topfive[-5][1] != topfive[-6][1] :
    topfive = topfive[:-6:-1]
  else :
    i = -6
    p = []
    while i>(0-len(topfive)) :
      if topfive[i][1] == topfive[i-1][1] :
        p += [(topfive[i])]
      else :
        break
      i -= 1
    topfive = topfive[:-6:-1] + p
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2 != 0 :
    st = start + 1
  else :
    st = start
  if end%2 != 0 :
    en = end - 1
  else :
    en = end
  for i in athletes_by_Year_NOC :
    if int(i) >= st and int(i) <= en :
      m = get_medals_by_team(athletes_by_Year_NOC, i)
      if NOC in m :
        trend += [(i,m[NOC][0],m[NOC][1],m[NOC][2])]
    trend = sorted(trend)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for i in athletes_by_Year_NOC[year][NOC] :
          if i['Medal'] != 'NA' :
            sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  j = 0
  for i in NOCs :
    a = get_sports(athletes_by_Year_NOC, i, year)
    if j == 0 :
      sports = a
      j += 1
    else :
      sports = a & sports
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532170021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1148, 'const': 972, 'code+const': 2120}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    dict_data = {}
    dict_noc = {}
    dict_year = {}
    for k in range(1,len(data)):
        for i in range(len(data[0])):
            dict_data[data[0][i]] = data[k][i]
            #ได้dictของ data แต่ละบรรทัด
        if data[k][9] in dict_year:
            dict_year[data[k][9]].append(dict_data)
            dict_data = {}
        else:
            dict_year[data[k][9]] = [dict_data]
            dict_data = {}
    for e in dict_year: #e = 2000 , 2002 , 2004 ,...
        for y in range(len(dict_year[e])): #บอกได้ว่าแต่ละปีมีyข้อมูล
           if dict_year[e][y]['NOC'] not in dict_noc:
               dict_noc[dict_year[e][y]['NOC']] = [dict_year[e][y]]
           else:
               dict_noc[dict_year[e][y]['NOC']].append(dict_year[e][y])
        athletes_by_Year_NOC[e] = dict_noc
        dict_noc = {}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    country = {}
    if year in athletes_by_Year_NOC:
      for i in athletes_by_Year_NOC[year]: #i = NOC ของแต่ละประเทศ เช่น "THA"
        country[i] = [0,0,0]
        for k in range(len(athletes_by_Year_NOC[year][i])):
            if athletes_by_Year_NOC[year][i][k]['Medal'] == 'Gold':
                country[i][0]+=1
            elif athletes_by_Year_NOC[year][i][k]['Medal'] == 'Silver':
                country[i][1]+=1
            elif athletes_by_Year_NOC[year][i][k]['Medal'] == 'Bronze':
                country[i][2]+=1
        medals[i] = tuple(country[i])
    return medals
#======================================
def get_top_five(medals):
    x = []
    t = []
    if medals == {}:
        topfive = []
    else:
        for i in medals:
            x.append([medals[i],i])
        x.sort(reverse=True)
        t_medal = x[0][0]
        t.append((x[0][1],)+x[0][0])
        c = 1
        for k in x[1:]:
            if k[0] == t_medal:
                t.insert(-(c),(k[1],)+k[0])
                c+=1    
            else:
                t.append((k[1],)+k[0])
                t_medal = k[0]
                c = 1
        topfive = t[0:5]
        u = 5
        while t[u][1:] == t[4][1:]:
            topfive.append(t[u])
            u+=1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in athletes_by_Year_NOC:
        if start <=int(i) <= end:
            m = get_medals_by_team(athletes_by_Year_NOC,i)
            if NOC in m:
                trend.append((i,)+m[NOC])
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][NOC]:  #i = dict_data
                if i['Medal'] != 'NA':
                    sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    ss = []
    for i in NOCs: #i = 'THA','VIE'
        s = get_sports(athletes_by_Year_NOC, i , year)
        ss.append(s)
    inter = ss[0]
    for k in range(len(ss)):
        inter = inter.intersection(ss[k])
    sports = set(inter)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532171621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.0IndexError('list index out of range')
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1104, 'const': 1008, 'code+const': 2112}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  key=data[0]
  for i in data[1:]:
    if i[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[i[9]]={}
      pass
    if i[7] not in athletes_by_Year_NOC[i[9]]:
      athletes_by_Year_NOC[i[9]][i[7]]=[]
      pass
    d={}       
    for j in range(len(i)):
      d[key[j]]=i[j]
    athletes_by_Year_NOC[i[9]][i[7]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  count=0
  s=0
  b=0
  key=[]
  value=[]
  for i in athletes_by_Year_NOC[year]:
    k=athletes_by_Year_NOC[year][i]
    for j in range(len(k)):
      y=k[j]['Medal']
      if y == 'Gold':
        count+=1
      if y == 'Silver':
        s+=1
      if y == 'Bronze':
        b+=1
    key.append(i)
    v=(count,s,b)
    value.append(v)
    count,s,b=(0,0,0)
  for i in range(len(key)):
    medals[key[i]]=value[i]
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l=[]
  for i in medals:
    l.append(medals[i])
  l.sort()
  A=l[-1:-6:-1]
  i=-6
  while l[i]==l[-5]:
    A.append(l[i])
    i-=1
  k=[]
  for j in range(len(A)):
    for e in medals:
      if A[j]==medals[e] and e not in k:
        k.append(e)
  #print(A)
  k.sort()
  q=[]
  for i in range(len(A)):
    for j in range(len(k)):
      if A[i]==medals[k[j]] and k[j] not in q: 
        q.append(k[j])
  for i in range(len(A)):
    topfive.append((q[i],A[i][0],A[i][1],A[i][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC: 
      if NOC in athletes_by_Year_NOC[str(i)]:
        t=(get_medals_by_team(athletes_by_Year_NOC,str(i)))
        trend.append((str(i),t[NOC][0], t[NOC][1], t[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC: 
    if NOC in athletes_by_Year_NOC[year]:
      k=athletes_by_Year_NOC[year][NOC]
      for i in k:
        if i['Medal'] != 'NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if str(year) in athletes_by_Year_NOC:
    if list(NOCs)[0] in athletes_by_Year_NOC[str(year)]: 
      e1 = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
      for n in list(NOCs)[1:]:
        if n in athletes_by_Year_NOC[str(year)]:
          x = get_sports(athletes_by_Year_NOC, n, year)
        else:
          x = set()
        e1 = e1.intersection(x)
  sports = e1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532111021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.34KeyError('2001')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 856, 'const': 1012, 'code+const': 1868}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(2000, 2017):
    athletes_by_Year_NOC[str(i)] = {}
  for e in data[1:]:
    year = e[9]
    NOC = e[7]
    athletes_by_Year_NOC[year][NOC] = []
  for e in data[1:]:
    year = e[9]
    NOC = e[7]
    a = {}
    for j in range(0,15):
      a[data[0][j]] = e[j]
    athletes_by_Year_NOC[year][NOC].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for e in athletes_by_Year_NOC[year].keys():
    medals[e] = [0,0,0]
  for e in athletes_by_Year_NOC[year].items():
    for p in e[1]:
      if p['Medal'] == "Bronze":
        medals[e[0]][2] += 1
      if p['Medal'] == "Gold":
        medals[e[0]][0] += 1
      if p['Medal'] == "Silver":
        medals[e[0]][1] += 1
  for e in medals.keys():
    medals[e] = tuple(medals[e])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  toSort = []
  for e in medals.items():
    toSort.append([(-e[1][0] , -e[1][1], -e[1][2]), e[0]])
  toSort.sort()
  for e in toSort[:5]:
    topfive.append( (e[1], -e[0][0], -e[0][1], -e[0][2]) )
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
    m = get_medals_by_team(athletes_by_Year_NOC, str(i))
    if NOC in m.keys():
      trend.append((str(i), m[NOC][0], m[NOC][1], m[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if not year in athletes_by_Year_NOC.keys(): return sports
  if not NOC in athletes_by_Year_NOC[year].keys(): return sports
  for e in athletes_by_Year_NOC[year][NOC]:
    if e['Medal'] != 'NA':
      sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for e in NOCs:
    sports = sports.union(get_sports(athletes_by_Year_NOC, e, year))
  for e in NOCs:
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, e, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532004521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.21
[[('DC', 1, 1, 01), ('AE', 1, 1, 01), ('BA', 1, 1, 0), ('CB', 1, 1, 10), ('ED', 1, 1, 10)],
 [('FB', 1, 01, 01), ('DA', 1, 01, 10), ('AD', 1, 10, 01), ('BF', 1, 10, 10), ('XC', 0, 01, 10)],
 [('QC', 9, 210, 09), ('FE', 9, 710, 98), ('A', 9, 9, 9), ('CF', 9, 107, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('XA', 3, 2, 1), ('B', 3, 2, 01), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 784, 'const': 1065, 'code+const': 1849}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    info={}
    for j in range(len(data[i])):
      info[data[0][j]]=data[i][j]
    if info["Year"] in athletes_by_Year_NOC:
      if info["NOC"] in athletes_by_Year_NOC[info["Year"]]:
        athletes_by_Year_NOC[info["Year"]][info["NOC"]].append(info)
      else:
        athletes_by_Year_NOC[info["Year"]][info["NOC"]]=[info]
    else:
      athletes_by_Year_NOC[info["Year"]]={info["NOC"]:[info]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for country in athletes_by_Year_NOC[year]:
    Gold=0
    Silver=0
    Bronze=0
    for person in athletes_by_Year_NOC[year][country]:
      if person["Medal"]=="Gold":
        Gold+=1
      elif person["Medal"]=="Silver":
        Silver+=1
      elif person["Medal"]=="Bronze":
        Bronze+=1
    medals[country]=(Gold,Silver,Bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all_country=[]
  for country in medals:
    all_country.append((country,medals[country][0],medals[country][1],medals[country][2]))
  all_country.sort(key=lambda x:x[1],reverse=True)
  topfive=all_country[:5]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range (start,end+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        info=get_medals_by_team(athletes_by_Year_NOC, str(i))
        trend.append((str(i),info[NOC][0],info[NOC][1],info[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
        for person in athletes_by_Year_NOC[year][NOC]:
          sport=person["Sport"]
          if person["Medal"]!="NA":
            sports.add(sport)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  added=0
  if year in athletes_by_Year_NOC:
      for country in NOCs:
        if country in athletes_by_Year_NOC[year]:
          sports_country=get_sports(athletes_by_Year_NOC, country, year)
          if added==0:
            for sport in sports_country:
              sports.add(sport)
            added=1
          else:
            sports=sports.intersection(sports_country)
        else:
          sports=sports.intersection(set())
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532089921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.21
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('NQ', 3, 3, 3), ('A', 3, 2, 1), ('MB', 3, 2, 1), ('KF', 3, 2, 1), ('J', 3, 2, 1), ('FK', 3, 2, 1),
  ('BM', 3, 2, 1),
 ('N', 3, 2, 1), ('AS', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1000, 'const': 1404, 'code+const': 2404}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for d in data[1:]:
    if d[9] not in athletes_by_Year_NOC.keys(): athletes_by_Year_NOC[d[9]] = {}
    if d[7] not in athletes_by_Year_NOC[d[9]].keys(): athletes_by_Year_NOC[d[9]][d[7]] = []
    di = {}
    for k,v in zip(data[0],d):
      di[k] = v
    athletes_by_Year_NOC[d[9]][d[7]].append(di)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medal_prize = ["Gold","Silver","Bronze","NA"]
  medals = {}
  for k,j in athletes_by_Year_NOC[year].items():
    medals[k] = [0,0,0]
    for v in j:
      if v['Medal'] == "NA": continue
      medals[k][medal_prize.index(v['Medal'])] += 1
  for k,v in medals.items():
    medals[k] = tuple(v)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals_list = []
  medals_set = set()
  for k,v in medals.items():
    medals_list.append((k,*v))
    medals_set.add(v)
  pv = None
  for m in sorted(medals_list):
    if m[1:] not in sorted(medals_set)[:5]: break
    if pv != m[1:]:
      if len(topfive) >= 5: break
      pv = m[1:]
    topfive.append(m)
  return sorted(topfive,key=lambda x: (x[1],x[2],x[3],x[0]),reverse=True)
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  medal_prize = ["Gold","Silver","Bronze","NA"]
  available_year = athletes_by_Year_NOC.keys()
  trend = []
  for year in range(start,end+1):
    if str(year) not in available_year: continue
    for k,j in athletes_by_Year_NOC[str(year)].items():
      medal = [str(year),0,0,0]
      if k != NOC: continue
      for v in j:
        if v['NOC'] != NOC or v['Medal'] == "NA": continue
        medal[medal_prize.index(v['Medal'])+1] += 1
      trend.append(tuple(medal))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if str(year) not in athletes_by_Year_NOC.keys(): return sports
  for k,j in athletes_by_Year_NOC[year].items():
      if k != NOC: continue
      for v in j:
        if v['Medal'] != 'NA': sports.add(v['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  setted = False
  NOCS_sports = []
  for NOC in NOCs:
    sports_NOC = set()
    if str(year) not in athletes_by_Year_NOC.keys(): return sports
    for k,j in athletes_by_Year_NOC[year].items():
      if k != NOC: continue
      for v in j:
        if v['Medal'] != 'NA': sports_NOC.add(v['Sport'])
    if setted: 
      sports = sports.intersection(sports_NOC)
    else:
      sports = sports.union(sports_NOC)
      setted = True
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530241521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.6
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('BA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('MB', 3, 2, 1), ('AF', 3, 2, 1), ('BJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('SM', 3, 2, 1), ('JN', 3, 2, 1), ('KS', 3, 2, 1), ('FZ', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1200, 'const': 1541, 'code+const': 2741}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  t = {}
  size = len(data)
  for i in range(1, size):
    d = data[i]
    temp = {}
    a = {}
    for j in range(15):
      temp[data[0][j]] = d[j]
    if d[9] in t:
      if d[7] in t[d[9]]:
        a = t[d[9]][d[7]]
        a.append(temp)
        t[d[9]][d[7]] = a
      else:
        a = []
        a.append(temp)
        t[d[9]][d[7]] = a
    else:
      t2 = {}
      t2[d[7]] = [temp]
      t[d[9]] = t2
  athletes_by_Year_NOC = t
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d = athletes_by_Year_NOC
  for i in d[year]:
    if i not in medals:
      medals[i] = (0, 0, 0)
    for j in d[year][i]:
      temp = list(medals[i])
      if j['Medal'] == "Gold":
        temp[0] += 1
      if j['Medal'] == "Silver":
        temp[1] += 1
      if j['Medal'] == "Bronze":
        temp[2] += 1
      medals[i] = tuple(temp)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  count = 0
  n = True
  medals = list(sorted(medals.items(), key=lambda item: item[1]))
  medals = medals[::-1]
  for i in range (len(medals) - 1):
    d = medals[i]
    topfive.append((d[0], d[1][0], d[1][1], d[1][2]))
    if medals[i][1] != medals[i+1][1]:
      count += 1
    if count == 5:
      n = False
      break
  if medals[-1][1] == medals[-2][1] and n == True:
    d = medals[-1]
    topfive.append((d[0], d[1][0], d[1][1], d[1][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  t = athletes_by_Year_NOC
  for i in range(start, end + 1):
    temp = [0,0,0]
    if i%2==0:
      if NOC in t[str(i)]:
        for j in t[str(i)][NOC]:
          if j['Medal'] == "Gold":
            temp[0] += 1
          if j['Medal'] == "Silver":
            temp[1] += 1
          if j['Medal'] == "Bronze":
            temp[2] += 1
        trend.append((str(i),temp[0],temp[1],temp[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  t = athletes_by_Year_NOC
  if year in t:
    if NOC in t[year]:
      for i in t[year][NOC]:
        if i['Medal'] != "NA":
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  t = athletes_by_Year_NOC
  sports = set()
  a = [(len(get_sports(t, i, year)), i) for i in NOCs]
  sorted(a)
  m = a[0][1]
  if a[0][0] != 0:
    for i in get_sports(t, m, year):
      check = True
      for j in NOCs:
        if i not in get_sports(t, j, year):
          check = False
      if check == True:
        sports.add(i)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530308021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.5
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.85
[[('2004', 1, 5, 12)],
 [('2000', 4, 5, 8), ('2002', 0, 0, 0), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2004', 0, 0, 0), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 990, 'const': 1185, 'code+const': 2175}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  r=data[0]
  for e in data:
      f={}
      if e != data[0]:
          for i in range(len(e)):
              f[r[i]]=e[i]
          if e[9] not in athletes_by_Year_NOC:
              athletes_by_Year_NOC[e[9]]={e[7]:[f]}
          else:
              if e[7] not in athletes_by_Year_NOC[e[9]]:
                  athletes_by_Year_NOC[e[9]][e[7]]=[f]
              else :
                  athletes_by_Year_NOC[e[9]][e[7]]+=[f]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
   medals = {}
   d=athletes_by_Year_NOC[year]
   for i,j in d.items():
      g,s,b=0,0,0 
      for z in j:
          if z['Medal']=='Gold':
              g+=1
          elif z['Medal']=='Silver':
              s+=1
          elif z['Medal']== 'Bronze':
              b+=1        
      medals[i] = (g,s,b)
   return medals   
#======================================
def get_top_five(medals):
  topfive = []
  d=[]
  u=[]
  g={}
  for i, j in medals.items():
      if j not in g:
          g[j]=[i]
      else:
          g[j]+=[i]
  for i, j in g.items():
      d+=[[i,j]]
  d.sort()
  if len(d)>=5:
      d=d[:-6:-1]
  else:
      d=d[:-len(d)-1:1]
  for e in d:
      if len(topfive)>=5:break
      e[1].sort()
      for k in e[1]:
         topfive += [(k,e[0][0],e[0][1],e[0][2])]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    d=athletes_by_Year_NOC
    for i in range(start,end+1):
      g,s,b=0,0,0 
      if str(i) in d:
          if NOC in d[str(i)]:
              for j in d[str(i)][NOC]:
                  if j['Medal']=='Gold':
                      g+=1
                  elif j['Medal']=='Silver':
                      s+=1
                  elif j['Medal']== 'Bronze':
                      b+=1
          trend+=[(str(i), g, s, b)]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  d=athletes_by_Year_NOC
  if year in d and NOC in d[year]:
      for e in d[year][NOC]:
          if e['Medal'] != 'NA':
              sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  i=0
  d=athletes_by_Year_NOC
  if  year in d :
      for e in NOCs:
          g=set()
          if e in d[year]:
              g=get_sports(athletes_by_Year_NOC, e, year)
          if i==0:
            sports = g
            i+=1
          else:
            sports = sports & g
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532166521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.39
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('Z', 0, 0, 1),
  ('Y', 0, 0, 1), ('X', 0, 0, 1), ('W', 0, 0, 1)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('D', 9, 2, 1), ('B', 9, 2, 1),
  ('QD', 9, 2, 0), ('P', 1, 9, 99)],
 [('Q', 3, 3, 3), ('ZA', 3, 2, 1), ('SB', 3, 2, 1), ('NF', 3, 2, 1), ('MJ', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('FN', 3, 2, 1), ('BS', 3, 2, 1), ('AZ', 3, 2, 1), ('X', 3, 2, 0), ('P', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 826, 'const': 918, 'code+const': 1744}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  head = data[0]
  x = []
  for i in range(1, len(data)):
    each_info = data[i]
    d = {}
    for i in range(len(head)):
      d[head[i]] = each_info[i]
    x.append(d)
  for i in x:
    year = i['Year']
    athletes_by_Year_NOC[year] = {}
  for i in x:
    year = i['Year']
    dict_in_year = athletes_by_Year_NOC [year]
    dict_in_year[i['NOC']] = []
  for i in x:
    year = i['Year']
    dict_in_year = athletes_by_Year_NOC[year]
    dict_in_year[i['NOC']] += [i]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    key_noc = athletes_by_Year_NOC[year].keys()
    for i in key_noc:
      x = athletes_by_Year_NOC[year][i]      #ออกมาเป็น list ของ dict ที่ noc เดียวกัน
      count_gold = 0
      count_silver = 0
      count_bronze = 0
      for j in x:
        if j['Medal'] == 'Gold':
          count_gold += 1
        elif j['Medal'] == 'Silver':
          count_silver += 1
        elif j['Medal'] == 'Bronze':
          count_bronze += 1
      medals[i] = (count_gold,count_silver,count_bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all_medals = [(j,i) for i,j in zip(medals.keys(),medals.values())]
  all_medals.sort(reverse = True)
  topfive += [(i[1],) + i[0] for i in all_medals]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  #search year --> search NOC
  #{ year:  {NOC: [ {'ID':..., 'Name': ..., ... }, ... ], ...}, ... }
  trend = []
  for year in range(start, end+1):
    year = str(year)
    if (year in  athletes_by_Year_NOC) and (NOC in athletes_by_Year_NOC[year]):
      all_medals = get_medals_by_team(athletes_by_Year_NOC, year)
      medal = all_medals[NOC]
      trend.append((year, medal[0], medal[1], medal[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    x = athletes_by_Year_NOC[year]
    if NOC in x.keys():
      for i in range(len(x[NOC])):
        if x[NOC][i]['Medal'] in ['Gold','Silver','Bronze']:
          sports.add(x[NOC][i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    x = athletes_by_Year_NOC[year]
    for NOC in NOCs:
      sports = sports.union(get_sports(athletes_by_Year_NOC, NOC, year))
    for NOC in NOCs:
      sports = sports.intersection(get_sports(athletes_by_Year_NOC, NOC, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6432182421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.67
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0),
  ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0),
  ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('A', 3, 2, 1), ('B', 3, 2, 1),
  ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1), ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1),
  ('Z', 3, 2, 1), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('A', 3, 2, 1), ('B', 3, 2, 1),
  ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1), ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1),
  ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1370, 'const': 1260, 'code+const': 2630}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  col = []
  for e in data[0]:
    col.append(e)
  for i in range(1,len(data)):
    for j in range(len(data[i])):
      year = data[i][9]
      if year not in athletes_by_Year_NOC: # ถ้าไม่มี year ใน dict
        athletes_by_Year_NOC[year] = {}
        noc = data[i][7]
        if noc not in athletes_by_Year_NOC[year]:
          athletes_by_Year_NOC[year][noc] = []
      elif year in athletes_by_Year_NOC:
        noc = data[i][7]
        if noc not in athletes_by_Year_NOC[year]:
          athletes_by_Year_NOC[year][noc] = []
    year = data[i][9]
    noc = data[i][7]
    tmp = {}
    tmp[col[0]] = data[i][0]
    tmp[col[1]] = data[i][1]
    tmp[col[2]] = data[i][2]
    tmp[col[3]] = data[i][3]
    tmp[col[4]] = data[i][4]
    tmp[col[5]] = data[i][5]
    tmp[col[6]] = data[i][6]
    tmp[col[8]] = data[i][8]
    tmp[col[10]] = data[i][10]
    tmp[col[11]] = data[i][11]
    tmp[col[12]] = data[i][12]
    tmp[col[13]] = data[i][13]
    tmp[col[14]] = data[i][14]
    athletes_by_Year_NOC[year][noc].append(tmp)
    tmp = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d = athletes_by_Year_NOC
  for e in d[year]:
    if e not in medals:
      medals[e] = [0,0,0]
    for k in d[year][e]:
      if k['Medal'] == 'Gold':
          medals[e][0] += 1
      elif k['Medal'] == 'Silver':
          medals[e][1] += 1
      elif k['Medal'] == 'Bronze':
          medals[e][2] += 1
  for e in medals:
    medals[e] = tuple(medals[e])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a = []
  for e in medals:
    medals[e] = list(medals[e])
    #{'FIN': [3, 1, 1], 'NOR': [20, 4, 19], dict ที่มี value เป็น dict 
  for e in medals: #[[3, 1, 1], [20, 4, 19], list จำนวนเหรียญ 
    a.append(medals[e]) 
  a.sort(reverse = True) 
  topf = a[:5] #[[10, 0, 0], [2, 0, 0], [0, 5, 0], [0, 5, 0], [0, 1, 2]]
  cont= []
  for e in topf:
    con = [i for i in medals if medals[i] == e]
    cont.append(con) #[['USA'], ['GER'], ['FRA', 'ESP'], ['FRA', 'ESP'], ['NCA', 'ITA', 'EGY']]
  for e in cont:
    e.sort()
  for e in cont:
    for i in range(len(e)):
      topfive.append([e[i]] + medals[e[i]])
  for i in range(len(topfive)):
    topfive[i] = tuple(topfive[i])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  year = []
  for i in range(start,end+1):
    year.append(str(i))
  #หาปีที่ต้องไปหาค่าต่อ
  for e in year:
    if e in athletes_by_Year_NOC:
      if NOC in get_medals_by_team(athletes_by_Year_NOC, e):
        trend.append([e] + list(get_medals_by_team(athletes_by_Year_NOC, e)[NOC]))
  for i in range(len(trend)):
    trend[i] = tuple(trend[i])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  #athletes_by_Year_NO => { year:  {NOC: [ {'ID':..., 'Name': ..., ... }, ... ], ...}, ... }
  #NOC 
  #year
  sports = set()
  s = []
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      at = athletes_by_Year_NOC[year][NOC]
    #[{'ID': '21596', 'Name': 'Somchai Cimlum', 'Sex': 'M', ....
      for e in at:
        if e['Medal'] != 'NA':
          s.append(e['Sport'])
          #['Boxing', 'Weightlifting', 'Boxing']
  sports = set(s)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  d = athletes_by_Year_NOC 
  #{ year:  {NOC: [ {'ID':..., 'Name': ..., ... }, ... ], ...}, ... }
  noc = list(NOCs)
  #['THA','VIE']
  #year => '2008'
  a = []
  for e in noc:
    a.append(get_sports(d, e, year))
    #[['Weightlifting'], ['Weightlifting', 'Boxing', 'Taekwondo']]
  if len(a) >= 2:
    sports.update(a[0])
    for i in range(len(a)-1):
      sports.intersection_update(a[i+1])
    return sports
  #return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532110321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.78
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('DB', 1, 1, 0), ('BD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('Z', 3, 2, 1), ('MK', 3, 2, 1),
  ('KM', 3, 2, 1), ('BN', 3, 2, 1), ('S', 3, 2, 1), ('NZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1338, 'const': 1345, 'code+const': 2683}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for a in data[1:]:
    year = a[9]
    noc = a[7]
    NOC = {}
    data1 = []
    data2 = {}
    for b in range(len(data[0])):
      data2.update({data[0][b]:a[b]})
    data1.append(data2)
    if year in athletes_by_Year_NOC:
      if noc in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][noc].append(data2)
      else:
        athletes_by_Year_NOC[year].update({noc:data1})
    else:
      NOC.update({noc:data1})
      athletes_by_Year_NOC.update({year:NOC})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  a = athletes_by_Year_NOC[year]
  for b in a:
    medal_all = [0,0,0]
    for c in a[b]:
      medal = c['Medal']
      if medal == 'Gold':
        medal_all[0] += 1
      elif medal == 'Silver':
        medal_all[1] += 1
      elif medal == 'Bronze':
        medal_all[2] += 1
    tuple_medal_all = tuple(medal_all)
    medals.update({str(b):tuple_medal_all})
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medal_all = medals
  a = []
  for i in medal_all:
    b = medal_all[i] 
    list_b = list(b)
    list_b.insert(0,i)
    a.append(list_b)
  while len(topfive) < 5:
    c = a[0]
    for j in a[1:]:
      if c[1] > j[1]:
        pass
      elif c[1] < j[1]:
        c = j
      elif c[1] == j[1]:
        if c[2] > j[2]:
          pass
        elif c[2] < j[2]:
          c = j
        elif c[2] == j[2]:
          if c[3] > j[3]:
            pass
          elif c[3] < j[3]:
            c = j
          elif c[3] == j[3]:
            if c[0] > j[0]:
              c = j
    a.remove(c)
    d = tuple(c)
    topfive.append(d)
    for k in range(len(a)):
      for k in a:
        if c[1] == k[1] and c[2] == k[2] and c[3] == k[3]:
          a.remove(k)
          d = tuple(k)
          topfive.append(d)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start % 2 != 0:
    start = start + 1
  year = start
  while year <= end:
    if NOC not in athletes_by_Year_NOC[str(year)]:
      pass
    else:
      a = athletes_by_Year_NOC[str(year)][NOC]
      total_medal = [0,0,0]
      for b in a:
        c = b['Medal']
        if c == 'Gold':
          total_medal[0] += 1
        elif c == 'Silver':
          total_medal[1] += 1
        elif c == 'Bronze':
          total_medal[2] += 1  
      if a != []:
        total_medal.insert(0,str(year))
        tuple_total_medal = tuple(total_medal)
        trend.append(tuple_total_medal)
    year += 2
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  year = int(year) 
  if 2000 <= year <= 2016:
    b = athletes_by_Year_NOC[str(year)]
    if NOC not in b:
      return sports
  else:
    return sports
  a = athletes_by_Year_NOC[str(year)][NOC]
  for b in a:
    c = b['Medal']
    if c == 'NA':
      pass
    else:
      d = b['Sport']
      sports.add(d)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  data1 = []
  for a in NOCs:
    sport_medal = get_sports(athletes_by_Year_NOC, a, year)
    data1.append(list(sport_medal))
  for b in data1[0]:
    d = len(data1)
    e = 0
    for c in data1:
      if b in c:
        e += 1
    if e == d:
      sports.add(b)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532137321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.82
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1108, 'const': 1104, 'code+const': 2212}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  nn = []
  for i in range(1,len(data)) :
    year = data[i][9]
    noc = data[i][7]
    no = {}
    nn = []
    if year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[year] = {}
    athletes_by_Year_NOC[year][noc] = nn
  for i in range(1,len(data)) :
    year = data[i][9]
    noc = data[i][7]
    n = {}
    for e in range(len(data[i])) :
      n[data[0][e]] = data[i][e]
    athletes_by_Year_NOC[year][noc] += [n]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  data = athletes_by_Year_NOC[year]
  for i in data :
    if i not in medals :
      g = 0
      s = 0
      b = 0
      for e in data[i] :
        if e['Medal'] == 'Gold' :
          g += 1
        if e['Medal'] == 'Silver' :
          s += 1
        if e['Medal'] == 'Bronze' :
          b += 1
      medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  mm = sorted(medals.items(),key = lambda x:x[1],reverse = True)
  c = 0
  top = []
  for i in range(len(mm)-1) :
    if mm[i][1] != mm[i+1][1] :
      if top != [] :
        med = mm[i][1]
        top += [(mm[i][0],med[0],med[1],med[2])]
        top = sorted(top,key = lambda x:x[0])
        topfive += top
        top = []
        continue
      if top == [] :
        med = mm[i][1]
        topfive += [(mm[i][0],med[0],med[1],med[2])]
        c += 1
    if mm[i][1] == mm[i+1][1] :
      med = mm[i][1]
      top += [(mm[i][0],med[0],med[1],med[2])]
    if c == 5 :
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  dd = {}
  for i in range(start,end+1) :
    if i%2 != 0 :
      continue
    if i%2 == 0 :
      dd[i] = get_medals_by_team(athletes_by_Year_NOC,str(i))
      if NOC in dd[i] :
        med = dd[i][NOC]
        trend += [(str(i),med[0],med[1],med[2])]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      data = athletes_by_Year_NOC[year][NOC] 
      for i in data :
        if i['Medal'] != 'NA' :
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  data = []
  for i in NOCs :
    data += [list(get_sports(athletes_by_Year_NOC,i,year))]
  for e in range(len(data)-1) :
    if e == 0 :
      sports = set(data[e]).intersection(data[e+1])
    if e > 0 :
      if sports == set() :
        break
      else :
        sports = set(sports).intersection(data[e])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431506021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.75
[[('2004', 1, 5, 12)],
 [('2000', 4, 5, 8), ('2002', 0, 0, 0), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2004', 0, 0, 0), ('2006', 5, 7, 7), ('2008', 4, 3, 12), ('2010', 0, 0, 0),
  ('2012', 0, 0, 0), ('2014', 0, 0, 0)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 920, 'const': 1151, 'code+const': 2071}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  keys = data[0]
  for row in data[1:]:
    year = row[9]
    noc = row[7]
    d = dict()
    for i in range(len(keys)):
      if i != 9 and i != 7:
        d[keys[i]] = row[i]
    if athletes_by_Year_NOC.get(year) == None:
      athletes_by_Year_NOC[year] = dict()
    if athletes_by_Year_NOC[year].get(noc) == None:
      athletes_by_Year_NOC[year][noc] = []
    athletes_by_Year_NOC[year][noc].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year].keys():
    m = [0, 0, 0, 0]
    prize = {"Gold": 0, "Silver": 1, "Bronze": 2, "NA": 3}
    for j in athletes_by_Year_NOC[year][i]:
      m[prize[j["Medal"]]] += 1
    medals[i] = tuple(m[:-1])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sortedMedals = sorted([([-int(k) for k in medal], country) for country, medal in medals.items()])
  index = 0
  while index < 5:
    temp = sortedMedals[index][0]
    while index < len(sortedMedals) and sortedMedals[index][0] == temp:
      m, c = sortedMedals[index]
      g, s, b = m
      topfive.append((c, -g, -s, -b))
      index += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  prize = {"Gold": 0, "Silver": 1, "Bronze": 2, "NA": 3}
  for year in range(start, end + 1):
    m = [0, 0, 0, 0]
    if (athletes_by_Year_NOC.get(str(year)) != None and athletes_by_Year_NOC[str(year)].get(NOC) != None):
      for j in athletes_by_Year_NOC[str(year)][NOC]:
        m[prize[j["Medal"]]] += 1
    if year % 2 == 0:
      trend.append((str(year), m[0], m[1], m[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if (athletes_by_Year_NOC.get(str(year)) != None and athletes_by_Year_NOC[str(year)].get(NOC) != None):
    for j in athletes_by_Year_NOC[str(year)][NOC]:
      if j["Medal"] != "NA":
        sports.add(j["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  for i in NOCs[1:]:
    sports &= get_sports(athletes_by_Year_NOC, i, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6231017221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.94
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('MK', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.6KeyError('2010')
[[('2004', 1, 5, 12)],
 [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 07, 9)],
 [('20042', 53, 67, 7), ('2006', 65, 37, 97), ('2008', 04, 73, 912)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1110, 'const': 1700, 'code+const': 2810}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  year_noc = list(set(tuple([e[9], e[7]]) for e in data[1:]))
  for i in range(len(year_noc)):
    if not year_noc[i][0] in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year_noc[i][0]] = {year_noc[i][1]: []}
    else:
      athletes_by_Year_NOC[year_noc[i][0]][year_noc[i][1]] = []
  for i in range(1, len(data)):
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append({'ID': data[i][0], 'Name': data[i][1], 'Sex': data[i][2], 'Age': data[i][3], 'Height': data[i][4], 'Weight': data[i][5], 
                                                         'Team': data[i][6], 'NOC': data[i][7], 'Games': data[i][8], 'Year': data[i][9], 'Season': data[i][10],
                                                         'City': data[i][11], 'Sport': data[i][12], 'Event': data[i][13], 'Medal': data[i][14]})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year].keys():
    G, S, B = count(athletes_by_Year_NOC[year][i])
    medals[i] = (G, S, B)
  return medals
#======================================
def get_top_five(medals):
  top = []
  for i in medals.keys():
    top.append((i, medals[i][0], medals[i][1], medals[i][2]))
  top = sorted(top, key=lambda t: (-t[1], -t[2], -t[3], t[0]))
  topfive = top[0:5]
  for ii in top[6:]:
    if (topfive[-1][1], topfive[-1][2], topfive[-1][3]) == (ii[1], ii[2], ii[3]):
      topfive.append(ii)
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if i % 2 == 0 and NOC in athletes_by_Year_NOC[str(i)]:
      G, S, B = count(athletes_by_Year_NOC[str(i)][NOC])
      trend.append((str(i), G, S, B))
    elif i % 2 == 0:
      trend.append((str(i), 0, 0, 0))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
    return sports
  for i in athletes_by_Year_NOC[year][NOC]:
    if i['Medal'] != 'NA':
      sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
  for i in range(1,len(list(NOCs))):
    s = get_sports(athletes_by_Year_NOC, list(NOCs)[i], year)
    sports = sports.intersection(s)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def count(data):
  G = 0
  S = 0
  B = 0
  for j in data:
    if j['Medal'] == 'Gold':
      G += 1
    if j['Medal'] == 'Silver':
      S += 1
    if j['Medal'] == 'Bronze':
      B += 1
  return G, S, B

6530278821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.55
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0), ('C', 1, 1, 1), ('E', 1, 1, 1)],
 [('AB', 1, 1, 01), ('BA', 1, 1, 10), ('FD', 1, 0, 01), ('DF', 1, 0, 10), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('QB', 9, 2, 01)],
 [('QD', 39, 32, 31)],
 [('XQ', 3, 23, 03), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1),
  ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1092, 'const': 1356, 'code+const': 2448}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for d in data[1:]:
    dd = {}
    for i in range(len(d)):
      dd[data[0][i]] = d[i]
    #check year
    year = d[9]
    NOC = d[7]
    if year in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[year].keys():
        athletes_by_Year_NOC[year][NOC].append(dd)
      else:
        athletes_by_Year_NOC[year][NOC] = [dd]
    else:
      athletes_by_Year_NOC[year] = {}
      athletes_by_Year_NOC[year][NOC] = [dd]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for key, values in athletes_by_Year_NOC[year].items():
    for value in values:
      if key in medals.keys():
        if value['Medal'] == 'Gold':
          medals[key] = (medals[key][0]+1, medals[key][1], medals[key][2])
        if value['Medal'] == 'Silver':
          medals[key] = (medals[key][0], medals[key][1]+1, medals[key][2])
        if value['Medal'] == 'Bronze':
          medals[key] = (medals[key][0], medals[key][1], medals[key][2]+1)
      else:
        if value['Medal'] == 'Gold':
          medals[key] = (1, 0, 0)
        elif value['Medal'] == 'Silver':
          medals[key] = (0, 1, 0)
        elif value['Medal'] == 'Bronze':
          medals[key] = (0, 0, 1)
        else: medals[key] = (0, 0, 0)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  for key, values in medals.items():
    topfive.append((key, values[0], values[1], values[2]))
  topfive = sorted(topfive, key=lambda i: i[1:3], reverse=True)
  top=topfive
  topfive = topfive[:5]
  for i in top[5::]:
    if i[1::]==top[4][1::]:
      topfive.append(i)
  for polk in range(len(topfive)):
      for bose in range(len(topfive)-1):
          if topfive[bose][1:] == topfive[bose+1][1:]:
              if topfive[bose][0] > topfive[bose+1][0]:
                  topfive[bose], topfive[bose+1] = topfive[bose+1], topfive[bose]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    if str(year) in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[str(year)].keys():
        medals = get_medals_by_team(athletes_by_Year_NOC, str(year))
        trend.append((str(year), medals[NOC][0], medals[NOC][1], medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC.keys():
    if NOC in athletes_by_Year_NOC[year].keys():
      for i in athletes_by_Year_NOC[year][NOC]:
        if i['Medal'] != 'NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  for NOC in NOCs[1:]:
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, NOC, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530379521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.56
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('ZA', 3, 2, 1), ('SB', 3, 2, 1), ('NF', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 844, 'const': 965, 'code+const': 1809}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  allpeople=[]#เก็บdata topic:value ทุกคน
  for i in range(1,len(data)):
     topic_data={}#ทำdic topic:valueแต่ละคนแล้วค่อยยัด
     for e in range(0,len((data)[0])):
       topic_data[data[0][e]]=data[i][e]#ได้topic_value1คน
     allpeople.append(topic_data)
  for i in allpeople: #เอาคนทีละคนยัดลงdicซ้อนdiccheckปีก่อนแล้วcheckNOC
      NOC,year=i["NOC"],i["Year"]
      if year not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[year]={}
      if NOC not in athletes_by_Year_NOC[year]:
          athletes_by_Year_NOC[year][NOC]=[]
      athletes_by_Year_NOC[year][NOC].append(i)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  Gold=0
  Silver=0
  Bronze=0
  for i in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][i]:
          if e["Medal"].strip()=="Gold":
              Gold+=1
          elif e["Medal"].strip()=="Silver":
              Silver+=1
          elif e["Medal"].strip()=="Bronze":
              Bronze+=1
      medals[i]=(Gold,Silver,Bronze)
      Gold=0
      Silver=0
      Bronze=0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  top=[] #ทำเป็นlistเพื่อเรียงข้อมูล+จัดการข้างในง่ายๆ
  for i in medals:
      top.append((medals[i][0],medals[i][1],medals[i][2],i))
  top=sorted(top)
  top=top[-1:-6:-1]
  for i in top:
      topfive.append((i[3],i[0],i[1],i[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    new_abyn=athletes_by_Year_NOC
    for year in range(start, end+1):
        if str(year) not in new_abyn:
            new_abyn[str(year)]={}
    for year in range(start, end+1):
        medals = get_medals_by_team(new_abyn,str(year))
        if NOC in medals:
            trend.append((str(year), medals[NOC][0], medals[NOC][1], medals[NOC][2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      pp=athletes_by_Year_NOC[year][NOC]
      for i in pp:
        if i["Medal"]!="NA":
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  keep   = [] #เก็บประเทศ
  sport=[] #เก็บกีฬาแต่ละประเทศที่ได้เหร๊ยญ
  for i in list(NOCs):
      keep.append(i)
  for i in keep:
      sport.append((get_sports(athletes_by_Year_NOC, i, year) ))
  sports = sport[0]
  for s in sport:
    sports=sports.intersection(s)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530415421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.71
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.85
[[('2004', 1, 5, 12)],
 [('2000', 4, 5, 8), ('2002', 0, 0, 0), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2004', 0, 0, 0), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 814, 'const': 1392, 'code+const': 2206}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for d in data[1:]:
    year = d[9]
    noc = d[7]
    athlete_data = {}
    for i in range(15):
      athlete_data[data[0][i]] = d[i]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    athletes_by_Year_NOC[year][noc].append(athlete_data)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for key, val in athletes_by_Year_NOC[year].items():
    g = 0
    s = 0
    b = 0
    for d in val:
      if d['Medal'] == "Gold":
        g += 1
      elif d['Medal'] == "Silver":
        s += 1
      elif d['Medal'] == "Bronze":
        b += 1
    medals[key] = (g, s, b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sort_medals = sorted(medals.items(), key=lambda x:x[1], reverse=True)
  for d in range(5):
    medal = sort_medals[d][1]
    data = (sort_medals[d][0], medal[0], medal[1], medal[2])
    topfive.append(data)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for key, val in athletes_by_Year_NOC.items():
    g = 0
    s = 0
    b = 0
    if start > int(key) or int(key) > end:
      continue
    if NOC in val:
      for d in val[NOC]:
        if d['Medal'] == "Gold":
          g += 1
        elif d['Medal'] == "Silver":
          s += 1
        elif d['Medal'] == "Bronze":
          b += 1
    trend.append((key, g, s, b))
    trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for d in athletes_by_Year_NOC[year][NOC]:
        if d['Medal'] != 'NA':
          sports.add(d['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sport_list = []
  for NOC in NOCs:
    s = set()
    if NOC in athletes_by_Year_NOC[year]:
      for athlete in athletes_by_Year_NOC[year][NOC]:
        if athlete['Medal'] != 'NA':
          s.add(athlete['Sport'])
    sport_list.append(s)
  sports = sport_list[0]
  for NOC in range(1, len(NOCs)):
    sports = sports.intersection(sport_list[NOC])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532138021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.57
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('BA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('MB', 3, 2, 1), ('AF', 3, 2, 1), ('BJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('SM', 3, 2, 1), ('JN', 3, 2, 1), ('KS', 3, 2, 1), ('FZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 962, 'const': 1104, 'code+const': 2066}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for row in data[1:]:
      year,noc = row[9],row[7] 
      if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
      if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
      athdata = {}
      for i in range(len(data[0])):
            athdata[data[0][i]] = row[i]
      athletes_by_Year_NOC[year][noc].append(athdata)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc, listdata_athletes in athletes_by_Year_NOC[year].items():
        medals[noc] = (sum(1 for x in listdata_athletes if x['Medal'] == 'Gold'),
                       sum(1 for x in listdata_athletes if x['Medal'] == 'Silver'),
                       sum(1 for x in listdata_athletes if x['Medal'] == 'Bronze'))
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  listmedal=[]
    #medals={'FIN': (3, 1, 1), 'NOR': (20, 4, 19), 'NED': (27, 29, 23), 'EGY': (0, 0, 0)}
  listnoc = [ e for e in medals]
  listmedal = [list(medals[listnoc[i]]) + [i] for i in range(len(listnoc))]
  listmedal = sorted(listmedal)[::-1]
  final = listmedal[:5]
  c = 5
  while c < len(listmedal):
      if listmedal[c][0:3] == final[-1][0:3]:
          final.append(listmedal[c])
      else :
          break
      c += 1
  for e in final :
       topfive.append((listnoc[e[-1]],e[0],e[1],e[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  datanotsort = []
  for i in athletes_by_Year_NOC :
       if start <= int(i) <= end :
           medals = get_medals_by_team(athletes_by_Year_NOC,str(i))
           if NOC in medals :
               datanotsort.append([int(i)] + list(medals[NOC]))#ปี,ลิสต์เหรียญที่ได้
  for e in sorted(datanotsort) :
       trend.append(tuple([str(e[0])]+e[1::]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        athletes = athletes_by_Year_NOC[year][NOC]
        sports = {ath['Sport'] for ath in athletes if ath['Medal'] != 'NA'}
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  first_noc = True
  for NOC in NOCs: 
        if first_noc:
            sports |= get_sports(athletes_by_Year_NOC, NOC, year) # ได้มาเป็นเซตของกีฬาที่ได้เหรียญของประเทศนั้น
            first_noc = False
        else:
            sports &= get_sports(athletes_by_Year_NOC, NOC, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530395521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.58
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('DA', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('ZA', 3, 2, 1), ('SB', 3, 2, 1), ('NF', 3, 2, 1), ('KJ', 3, 2, 1), ('JK', 3, 2, 1),
  ('FM', 3, 2, 1), ('BN', 3, 2, 1), ('AS', 3, 2, 1), ('MZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1124, 'const': 1416, 'code+const': 2540}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in data[1:]:
        Dinin = {}
        for e in range(len(i)):
            Dinin[data[0][e]]= i[e]
        Lnoc = []
        Lnoc.append(Dinin)
        Dnoc = {}
        Dnoc[Dinin["NOC"]] = Lnoc
        if Dinin["Year"] in athletes_by_Year_NOC:
            if Dinin["NOC"] in athletes_by_Year_NOC[Dinin["Year"]]:
                athletes_by_Year_NOC[Dinin["Year"]][Dinin["NOC"]] += Lnoc
            else:
                athletes_by_Year_NOC[Dinin["Year"]][Dinin["NOC"]] = Lnoc
        else:
            athletes_by_Year_NOC[Dinin["Year"]]= Dnoc
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    K= athletes_by_Year_NOC[year]
    for NN,LL in K.items():
        G = 0
        S = 0
        B = 0
        for e in LL:
            if e["Medal"] =="Gold":
                G+=1
            if e["Medal"] =="Silver":
                S+=1
            if e["Medal"] =="Bronze":
                B+=1
        medals[NN]=(G,S,B)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    Ls = []
    for N,M in medals.items():
        LL = []
        for i in M:
            LL.append(i)
        LL.append(N)
        Ls.append(LL)
    Ls.sort()
    Llast = [i for i in Ls[-1:-6:-1]]
    for e in Ls[-6::-1]:
        if e[:-1]==Ls[-5][:-1]:
            Llast.insert(-1,e)
    for k in Llast:
        topfive.append((k[-1],k[0],k[1],k[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC :
            F = athletes_by_Year_NOC[str(i)]
            if NOC in F:
                L = F[NOC]
                G = 0
                S = 0
                B = 0
                for k in L:
                    if k["Medal"] =="Gold":
                        G+=1
                    if k["Medal"] =="Silver":
                        S+=1
                    if k["Medal"] =="Bronze":
                        B+=1
                trend.append(((str(i)),G,S,B))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    Lout = []
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year] :
            L = athletes_by_Year_NOC[year][NOC]
            Lout = []
            for i in L:
                if not i["Medal"] == "NA":
                    Lout.append(i["Sport"])
    if len(Lout) == 0:
        sports = set()
    else:
        sports = set(Lout)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    Lset = []
    for w in NOCs:
        Lset.append(w)
    NOCs = Lset
    sports = set()
    n =0
    if year in athletes_by_Year_NOC:
        for g in NOCs:
            if not g in athletes_by_Year_NOC[year]:
                n = 1
        if n == 0 :
            Lfirst = set()
            strfirst=""
            for i in athletes_by_Year_NOC[year][NOCs[0]]:
                if not i["Medal"]=="NA": 
                    Lfirst.add(i["Sport"])
            for h in NOCs[1:]:
                Lsec = set()
                for i in athletes_by_Year_NOC[year][h]:
                    if not i["Medal"]=="NA": 
                        Lsec.add(i["Sport"])
                Lfirst = Lfirst.intersection(Lsec)
            for w in Lfirst:
                sports.add(w)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532008021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.91
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('JK', 3, 2, 1),
  ('K', 3, 2, 1), ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1218, 'const': 1020, 'code+const': 2238}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data) :
    athletes_by_Year_NOC = {}
    result = {}
    info_list = get_info_list(data)
    for e in info_list :
        year = e['Year']
        noc = e['NOC']
        if year not in result :
            result[year] = ""
            if noc not in result[year] :
                subresult = {}
                subresult[noc] = [e]
                result[year] = subresult
            else :
                result[year][noc].append(e)
        else :
            if noc not in result[year] :
                result[year][noc] = [e]
            else :
                result[year][noc].append(e)
    athletes_by_Year_NOC = result
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year) :
    medals = {}
    for noc in athletes_by_Year_NOC[year] :
        medals[noc] = get_medals_from_F1(athletes_by_Year_NOC, noc, year)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    m = []
    for k,(a,b,c) in medals.items() :
        m.append([(-a,-b,-c),k])
    m.sort()
    for i in range(5) :
        g = -m[i][0][0]
        s = -m[i][0][1]
        b = -m[i][0][2]
        topfive.append((m[i][1], g, s, b))
    for i in range(5,len(m)) :
        g1 = -m[i-1][0][0]
        s1 = -m[i-1][0][1]
        b1 = -m[i-1][0][2]
        g2 = -m[i][0][0]
        s2 = -m[i][0][1]
        b2 = -m[i][0][2]
        if g1 == g2 :
            if s1 == s2 :
                if b1 == b2 :
                    topfive.append((m[i-1][1], g1, s1, b1))
                else : break
            else : break
        else : break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    s = 0
    e = 0
    if start % 2 == 1 :
        s += start + 1
    else :
        s += start
    if end % 2 == 1 :
        e += end -1
    else :
        e += end
    years = []
    while s != e :
        years.append(str(s))
        s += 2
    years.append(str(s))
    for y in years :
        if NOC in get_medals_by_team(athletes_by_Year_NOC, y) :
            g,s,b = get_medals_by_team(athletes_by_Year_NOC, y)[NOC]
            trend.append((y,g,s,b))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year) :
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            for e in athletes_by_Year_NOC[year][NOC] :
                if e['Medal'] != 'NA' :
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year) :
    sports = set()
    medals_list = []
    for NOC in NOCs :
        medal = get_sports(athletes_by_Year_NOC, NOC, year)
        medals_list.append(medal)
    for i in range(len(medals_list)) :
        sports = medals_list[0] & medals_list[i]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def get_info_list(data) :
    info_list = []
    for i in range(1,len(data)) :
        d = {}
        for j in range(15) :
            d[data[0][j]] = data[i][j]
        info_list.append(d)
    return info_list
def get_medals_from_F1(athletes_by_Year_NOC, noc, year) :
    info_list = athletes_by_Year_NOC[year][noc]
    G = 0
    S = 0
    B = 0
    for i in range(len(info_list)) :
        Medal = info_list[i]['Medal']
        if Medal == 'Gold' :
            G += 1
        elif Medal == 'Silver' :
            S += 1
        elif Medal == 'Bronze' :
            B += 1
    return (G,S,B)

6530346821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.59
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('AD', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('MB', 3, 2, 1), ('AF', 3, 2, 1), ('BJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('SM', 3, 2, 1), ('JN', 3, 2, 1), ('KS', 3, 2, 1), ('FZ', 3, 2, 1), ('P', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1114, 'const': 1201, 'code+const': 2315}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  innoc = {}
  for i in range(1,len(data)):
    for e in range(len(data[0])):
      innoc[data[0][e]] = data[i][e]
    NOC = data[i][7]
    year = data[i][9]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {NOC:[innoc]}
    else:
      if NOC not in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][NOC] = [innoc]
      else:
        athletes_by_Year_NOC[year][NOC].append(innoc)
    innoc = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for noc in athletes_by_Year_NOC[year]:
      med = [0,0,0]
      for e in athletes_by_Year_NOC[year][noc]:
        if e['Medal'] == 'Gold'  :
          med[0] += 1
        if e['Medal'] == 'Silver' :
          med[1] += 1
        if e['Medal'] == 'Bronze' :
          med[2] += 1
        for i in athletes_by_Year_NOC[year]:
          medals[noc] = tuple(med)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  j = []
  cc  = 0
  for i in medals:
    j.append([[medals[i][0],medals[i][1],medals[i][2]],cc,i])
    cc += 1
  j.sort()
  j = j[::-1]
  c = 0
  k = []
  for e in range(len(j)-1):
    if j[e][0][0] == j[e+1][0][0] and j[e][0][1] == j[e+1][0][1] and j[e][0][2] == j[e+1][0][2]:
      topfive.append((j[e][2],j[e][0][0],j[e][0][1],j[e][0][2]))
    else:
      topfive.append((j[e][2],j[e][0][0],j[e][0][1],j[e][0][2]))
      c += 1
    if c >= 5:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for e in range(start,end+1):
    if str(e) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(e)]:
        med  = [str(e),0,0,0]
        for i in athletes_by_Year_NOC[str(e)][NOC]:
          if i['Medal'] == 'Gold'  :
            med[1] += 1
          if i['Medal'] == 'Silver' :
            med[2] += 1
          if i['Medal'] == 'Bronze' :
            med[3] += 1
        trend.append(tuple(med))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
        if e['Medal'] != 'NA':
          sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for i in NOCs:
    sports |= get_sports(athletes_by_Year_NOC, i, year)
  for e in NOCs:
    sports &= get_sports(athletes_by_Year_NOC, e, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532044621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.6
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('BA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('DB', 9, 2, 1), ('BD', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('MB', 3, 2, 1), ('AF', 3, 2, 1), ('BJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('SM', 3, 2, 1), ('JN', 3, 2, 1), ('KS', 3, 2, 1), ('FZ', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 890, 'const': 1169, 'code+const': 2059}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  all_athletes_info = []
  hua = data[0]
  for raw_data in data[1:]:
    info = {}
    for i in range(len(hua)):
      info[hua[i]] = raw_data[i]
    all_athletes_info.append(info)
  for athlete_info in all_athletes_info:
    year, noc = athlete_info['Year'], athlete_info['NOC']
    if year in athletes_by_Year_NOC:
      # check that noc is existing
      if noc in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][noc].append(athlete_info)
      elif noc not in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][noc] = [athlete_info]
    elif year not in athletes_by_Year_NOC:
      # create year
      athletes_by_Year_NOC[year] = {noc: [athlete_info]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
      for k, v in athletes_by_Year_NOC[year].items():
          g = 0
          s = 0
          b = 0
          for e in v:
            if e['Medal'] == 'Gold':
               g += 1
            elif e['Medal'] == 'Silver':
               s += 1
            elif e['Medal'] == 'Bronze':
               b += 1
            medals[k] = (g, s, b)
      return medals
    else: return {}
#======================================
def get_top_five(medals):
  if medals == {}:
    return []
  else:
    topfive = []
    topfive_medals = sorted(list(set(medals.values())), reverse=True)[:5]
    topfive_medals_cleaned = []
    for medal in topfive_medals:
      if medal != (0, 0, 0):
        topfive_medals_cleaned.append(medal)
  #for fahsai_medals in topfive_medals_cleaned:
    for noc, medal in medals.items():
      if medal in topfive_medals_cleaned:
        topfive.append((noc, medal))
    x = sorted(topfive, key=lambda item: item[1])
    x.reverse()
    ans = []
    for e in x:
      ans.append((e[0], e[1][0], e[1][1], e[1][2]))
    return ans
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        medals = get_medals_by_team(athletes_by_Year_NOC, str(i))
        medal = medals[NOC]
        trend.append((str(i), medal[0], medal[1], medal[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
        people = athletes_by_Year_NOC[year][NOC]
        for e in people:
          if e['Medal'] != 'NA':
            sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  x1 = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
  for e in list(NOCs)[1::] :
    x = get_sports(athletes_by_Year_NOC, e, year)
    x1 = x1.intersection(x)
  sports = x1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6230260121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.61
[[('EC', 1, 1, 1), ('CE', 1, 1, 1), ('BA', 1, 1, 0), ('AB', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('NA', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('AN', 3, 2, 1), ('BS', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1080, 'const': 1424, 'code+const': 2504}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  unique_year = list(set([i[9] for i in data[1:]]))
  unique_year.sort()
  for iyear in unique_year:
    unique_NOC = list(set([i[7] for i in data[1:] if i[9] == iyear]))       
    unique_NOC.sort()
    athletes_by_Year_NOC[iyear] = {unique_NOC[i]:None for i in range(len(unique_NOC))}
    for iNOC in unique_NOC:
      info_with_list = [ j for j in data[1:] if (j[9] == iyear and  j[7] == iNOC)  ]
      info_with_dict = [dict(zip(data[0],i)) for i in info_with_list]
      athletes_by_Year_NOC[iyear][iNOC]=info_with_dict
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  b,s,g = (0,0,0)
  for noc in athletes_by_Year_NOC[year]:
    for info in athletes_by_Year_NOC[year][noc]:
      if info['Medal'] == 'Bronze':
        b+=1
      elif info['Medal'] == 'Silver':
        s+=1
      elif info['Medal'] == 'Gold':
        g+=1
    medals[noc] = g,s,b
    b,s,g = (0,0,0)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sorted_dict = dict(sorted(medals.items(), key=lambda x: x[1]))
  for index , key in enumerate(sorted_dict):
      if index >= len(sorted_dict)-5 :
        add_noc_list = list(sorted_dict[key])
        add_noc_list.insert(0,key)
        add_noc_tuple = tuple(add_noc_list)
        topfive.insert(0,add_noc_tuple)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  b,s,g = (0,0,0)
  for all_year in athletes_by_Year_NOC:
    if int(all_year) < start or int(all_year) > end :
      continue
    try:
      for i in range (len(athletes_by_Year_NOC[all_year][NOC])):
        medal_info =  athletes_by_Year_NOC[all_year][NOC][i]['Medal']
        if medal_info == 'Bronze':
            b+=1
        elif medal_info == 'Silver':
            s+=1
        elif medal_info == 'Gold':
            g+=1
      sum_list = [g,s,b]
      sum_list.insert(0,all_year)
      sum_list = tuple(sum_list)
      b,s,g = (0,0,0)
      trend.append(tuple(sum_list))
    except:
      continue
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  try:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal'] != 'NA':
        sports.add(i['Sport'])
  except:
      pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_of_set_of_sports = list()
  for noc in NOCs:
    all_sports_got_medal = set()
    try:
      for i in athletes_by_Year_NOC[year][noc]:
        if(i['Medal'] != 'NA'):
          all_sports_got_medal.add(i['Sport'])
      copy_set = all_sports_got_medal.copy()
      list_of_set_of_sports.append(copy_set)
      all_sports_got_medal.clear()
    except:
      break
  try:
    sports = set.intersection(*list_of_set_of_sports)
  except:
    pass
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530267921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.61
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('PB', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 01),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1158, 'const': 1488, 'code+const': 2646}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      year = data[i][9]
      noc = data[i][7]
      if year not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[year] = {}
      if noc not in athletes_by_Year_NOC[year]:
         athletes_by_Year_NOC[year][noc] = []
         athletes_by_Year_NOC[year][noc].append({
            'ID': data[i][0],
            'Name': data[i][1],
            'Sex': data[i][2],
            'Age': data[i][3],
            'Height': data[i][4],
            'Weight': data[i][5],
            'Team': data[i][6],
            'NOC': data[i][7],
            'Games': data[i][8],
            'Year': data[i][9],
            'Season': data[i][10],
            'City': data[i][11],
            'Sport': data[i][12],
            'Event': data[i][13],
            'Medal': data[i][14]
        })
      else:
            athletes_by_Year_NOC[year][noc].append({
            'ID': data[i][0],
            'Name': data[i][1],
            'Sex': data[i][2],
            'Age': data[i][3],
            'Height': data[i][4],
            'Weight': data[i][5],
            'Team': data[i][6],
            'NOC': data[i][7],
            'Games': data[i][8],
            'Year': data[i][9],
            'Season': data[i][10],
            'City': data[i][11],
            'Sport': data[i][12],
            'Event': data[i][13],
            'Medal': data[i][14]
        })
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
        for NOC in athletes_by_Year_NOC[year]:
            gold = 0
            silver = 0
            bronze = 0
            for athlete in athletes_by_Year_NOC[year][NOC]:
                if athlete['Medal'] == 'Gold':
                    gold += 1
                elif athlete['Medal'] == 'Silver':
                    silver += 1
                elif athlete['Medal'] == 'Bronze':
                    bronze += 1
            medals[NOC] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sorted_medals = sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))
  last_score = None
  count = 0
  for country, medal_count in sorted_medals:
        score = (medal_count[0], medal_count[1], medal_count[2])
        if last_score is None or score != last_score:
            count += 1
            if count > 5:
                break
            topfive.append((country, medal_count[0], medal_count[1], medal_count[2]))
            last_score = score
        elif count == 5:
            topfive.append((country, medal_count[0], medal_count[1], medal_count[2]))
  topfive = topfive[:5]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  t = tuple()
  for i in range(start, end+1):
      if str(i) in athletes_by_Year_NOC:
          if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)):
              t += get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
          if t == ():
              pass
          else:
              trend.append(((str(i), )+t))
      t = tuple()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in get_medals_by_team(athletes_by_Year_NOC, year):
          for c in athletes_by_Year_NOC[year][NOC]:
              if c['Medal'] == 'NA':
                  pass
              else:
                  sports.add(c['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s1 = set()
  s2 = set()
  f = True 
  for c in NOCs:
      if f == True:
          s1 = get_sports(athletes_by_Year_NOC, c, year)
          f = False
      s2 = get_sports(athletes_by_Year_NOC, c, year)
      sports = s1.intersection(s2)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532192821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.85
[[('2004', 1, 5, 12)],
 [('2000', 4, 5, 8), ('2002', 0, 0, 0), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2004', 0, 0, 0), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1200, 'const': 1971, 'code+const': 3171}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)) :
        a = {}
        a["ID"] = data[i][0]; a["Name"] = data[i][1];a["Sex"] = data[i][2];a["Age"] = data[i][3];a["Height"] = data[i][4];a["Weight"] = data[i][5];a["Team"] = data[i][6];a["Games"] = data[i][8];a["Season"] = data[i][10];a["City"] = data[i][11];a["Sport"] = data[i][12];a["Event"] = data[i][13];a["Medal"] = data[i][14]
        country = data[i][7]
        year = data[i][9]
        if  year not in athletes_by_Year_NOC :
           info = {}
           info[country] = [a]
           athletes_by_Year_NOC[data[i][9]] = info
        else :
            cc = False
            for k in athletes_by_Year_NOC[year] :
                if country == k :
                    cc = True
                    break
            if cc == False :
                athletes_by_Year_NOC[year][country] = [a]
            else :
                athletes_by_Year_NOC[year][country].append(a)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    x = athletes_by_Year_NOC[year]
    c = []
    for k in x :
        c.append(k)
    for e in c :
        g = 0;s = 0; b = 0
        y = x[e]
        for v in y :
            if v['Medal'] == 'Gold'  :
                g += 1
            elif v['Medal'] == 'Silver'  :
                s += 1
            elif v['Medal'] == 'Bronze'  :
                b += 1
        medals[e] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    z =[]
    for k,v in medals.items() :
        z.append([[-v[0],-v[1],-v[2]],k])
    z.sort()
    topfive = []
    n = 5
    for i in range(4,len(z)-1) :
        if z[i][0] == z[i+1][0] and i >= 4 :
            n += 1
        else : break
    for i in range(n):
        topfive.append((z[i][1],-z[i][0][0],-z[i][0][1],-z[i][0][2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    y = []
    for k in athletes_by_Year_NOC :
        if start <= int(k) <= end :
            y.append(k)
    for e in sorted(y) :
        if NOC in athletes_by_Year_NOC[e] :
            m = get_medals_by_team(athletes_by_Year_NOC, e)
            mm = m[NOC]
            trend.append((e,mm[0],mm[1],mm[2]))
        else :
            trend.append((e,0,0,0))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        x = athletes_by_Year_NOC[year]
        if NOC in x :
            y = x[NOC]
            for i in range(len(y)) :
                if y[i]['Medal'] != 'NA' :
                    sports.add(y[i]['Sport']) 
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    x = []
    c = []
    for e in NOCs :
        c.append(e)
    for i in range(len(NOCs)) :
        x.append(get_sports(athletes_by_Year_NOC, c[i], year))
    sports = x[0]
    for i in range(1,len(c)) :
        sports &= x[i]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532197021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.66
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('C', 0, 1, 0), ('F', 1, 0, 0), ('WC', 0, 01, 10)],
  [('XC', 09, 10, 19), ('YE', 0, 09, 1), ('Z', 0, 0, 18)],
 [('PA', 1, 9, 99), ('C', 9, 10, 9), ('AF', 9, 97, 9), ('EB', 9, 102, 81), ('FD', 9, 72, 91)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1044, 'const': 2259, 'code+const': 3303}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for Kaojaa in data[1:]:
    Year = Kaojaa[9]
    NOC = Kaojaa[7]
    if Year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[Year] = {}
    if NOC not in athletes_by_Year_NOC[Year]:
      athletes_by_Year_NOC[Year][NOC] = []
    athlete = {}
    athlete['ID'] = Kaojaa[0]
    athlete['Name'] = Kaojaa[1]
    athlete['Sex'] = Kaojaa[2]
    athlete['Age'] = Kaojaa[3]
    athlete['Height'] = Kaojaa[4]
    athlete['Weight'] = Kaojaa[5]
    athlete['Team'] = Kaojaa[6]
    athlete['NOC'] = Kaojaa[7]
    athlete['Games'] = Kaojaa[8]
    athlete['Year'] = Kaojaa[9]
    athlete['Season'] = Kaojaa[10]
    athlete['City'] = Kaojaa[11]
    athlete['Sport'] = Kaojaa[12]
    athlete['Event'] = Kaojaa[13]
    athlete['Medal'] = Kaojaa[14]
    athletes_by_Year_NOC[Year][NOC].append(athlete)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC in athletes_by_Year_NOC.get(year, {}):
        gold = silver = bronze = 0
        for athlete in athletes_by_Year_NOC.get(year, {}).get(NOC, []):
            if athlete.get('Medal') == 'Gold':
                gold += 1
            elif athlete.get('Medal') == 'Silver':
                silver += 1
            elif athlete.get('Medal') == 'Bronze':
                bronze += 1
        medals[NOC] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
    top_five = []
    medal_counts = {}
    for nation, medal_list in medals.items():
        gold, silver, bronze = medal_list
        total = gold + silver + bronze
        if total not in medal_counts:
            medal_counts[total] = []
        medal_counts[total].append(nation)
    sorted_counts = sorted(medal_counts.keys(), reverse=True)
    for count in sorted_counts:
        if len(top_five) >= 5:
            break
        countries = medal_counts[count]
        countries.sort()
        for nation in countries:
            medal_list = medals[nation]
            top_five.append((nation, medal_list[0], medal_list[1], medal_list[2]))
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  medals_by_year = {}
  for year in range(start, end+1):
      if year % 2 == 0:
          medals_by_team = get_medals_by_team(athletes_by_Year_NOC, str(year))
          if NOC in medals_by_team:
              medals = medals_by_team[NOC]
              medals_by_year[year] = (medals[0], medals[1], medals[2])
  trend = [(str(year), medals[0], medals[1], medals[2]) for year, medals in sorted(medals_by_year.items())]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  try:
      athletes = athletes_by_Year_NOC[year][NOC]
  except KeyError:
      return sports
  for athlete in athletes:
      if athlete['Medal'] != 'NA':
          sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports_by_NOC = {}
  for NOC in NOCs:
      sports_by_NOC[NOC] = set()
      try:
          athletes = athletes_by_Year_NOC[year][NOC]
      except KeyError:
          continue
      for athlete in athletes:
          if athlete['Medal'] != 'NA':
              sports_by_NOC[NOC].add(athlete['Sport'])
  sports = set.intersection(*sports_by_NOC.values())
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6430314621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 792, 'const': 1028, 'code+const': 1820}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:]:
    if(not e[9] in athletes_by_Year_NOC):
      athletes_by_Year_NOC[e[9]] = dict()
    if(not e[7] in athletes_by_Year_NOC[e[9]]):
      athletes_by_Year_NOC[e[9]][e[7]] = list()
    atheletes = dict()
    for i in range(len(data[0])):
      atheletes[data[0][i]] = e[i]
    athletes_by_Year_NOC[e[9]][e[7]].append(atheletes);
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for n in athletes_by_Year_NOC[year]:
    m = [0,0,0]
    for e in athletes_by_Year_NOC[year][n]:
      if(e['Medal'] == 'Gold'):
        m[0]+=1
      if(e['Medal'] == 'Silver'):
        m[1]+=1
      if(e['Medal'] == 'Bronze'):
        m[2]+=1
    medals[n] = tuple(m)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  unsorted = {}
  for key in medals:
    l = medals[key]
    if(not l in unsorted):
      unsorted[l] = list()
    unsorted[l].append(key)
  for key in sorted(unsorted.keys(),reverse=True):
    if(len(topfive) >= 5):
      break
    for country in sorted(unsorted[key]):
      topfive.append((country,key[0],key[1],key[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if(i%2 == 0):
      medal = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if(NOC in medal):
        medals = medal[NOC]
        trend.append((str(i),medals[0],medals[1],medals[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if(not year in athletes_by_Year_NOC):
    return set()
  if(not NOC in athletes_by_Year_NOC[year]):
    return set()
  for e in athletes_by_Year_NOC[year][NOC]:
    if(e['Medal']!='NA'):
      sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  team = list()
  for NOC in NOCs:
    team.append(get_sports(athletes_by_Year_NOC,NOC,year))
  for otherTeam in team:
    team[0] = team[0].intersection(otherTeam)
  sports = team[0]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
# Test 1

6530220321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 840, 'const': 864, 'code+const': 1704}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    tag = data[0]
    for e in data[1:]:
        if e[9] in athletes_by_Year_NOC:
            if e[7] in athletes_by_Year_NOC[e[9]]:
                athletes_by_Year_NOC[e[9]][e[7]].append(add_info(e,tag))
            else:
                athletes_by_Year_NOC[e[9]][e[7]] = [add_info(e,tag)]
        else:
            athletes_by_Year_NOC[e[9]] = {e[7]:[add_info(e,tag)]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
      d = athletes_by_Year_NOC[year]
      for k,v in d.items():
          gold,silver,bronze = 0,0,0
          for e in v:
              if e['Medal'] == 'Gold': gold += 1
              elif e['Medal'] == 'Silver': silver += 1
              elif e['Medal'] == 'Bronze': bronze += 1
          medals[k] = (gold, silver, bronze)
    return medals   
#======================================
def get_top_five(medals):
    topfive = []
    allnoc = {}
    for k,v in medals.items():
        if v not in allnoc:  
            allnoc[v] = [k]
        else: allnoc[v].append(k)
    while len(topfive) < 5:
        for e in sorted(allnoc[max(allnoc)]):
            topfive.append((e,) + max(allnoc))
        allnoc.pop(max(allnoc))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start, end+1):
        if i % 2 == 0 and NOC in athletes_by_Year_NOC[str(i)]:
            m = get_medals_by_team(athletes_by_Year_NOC, str(i))
            trend.append((str(i),) + m[NOC])
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        d = athletes_by_Year_NOC[year]
        if NOC in d:
            for e in d[NOC]:
                if e["Medal"] != "NA" and e["Sport"] not in sports: sports.add(e["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    s = []
    if year in athletes_by_Year_NOC:
        for noc in NOCs:
            s.append(get_sports(athletes_by_Year_NOC, noc, year))
        a = s[0]
        for i in range(1,len(s)):
            a = a.intersection(s[i])
        sports = a
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def add_info(x,tag):
    info = {}
    for i in range(len(tag)):
        info[tag[i]] = x[i]
    return info

6530268521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1174, 'const': 1105, 'code+const': 2279}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1, len(data)):
        D = {}
        for j in range(15):
            D[data[0][j]] = data[i][j]
        if D['Year'] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[D['Year']] = {}
        if D['NOC'] not in athletes_by_Year_NOC[D['Year']]:
            athletes_by_Year_NOC[D['Year']][D['NOC']] = []
        athletes_by_Year_NOC[D['Year']][D['NOC']].append(D)
#    return athletes_by_Year_NOC # <--- IndentationError
  return athletes_by_Year_NOC 
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
        count = []
        G = 0
        S = 0
        B = 0
        for j in range(len(athletes_by_Year_NOC[year][i])):
            if 'Medal' in athletes_by_Year_NOC[year][i][j]:
                if athletes_by_Year_NOC[year][i][j]['Medal'] == 'Gold':
                    G = G + 1
                elif athletes_by_Year_NOC[year][i][j]['Medal'] == 'Silver':
                    S = S + 1
                elif athletes_by_Year_NOC[year][i][j]['Medal'] == 'Bronze':
                    B = B + 1
        count.append(G)
        count.append(S)
        count.append(B)
        medals[i] = tuple(count)
#    return medals # <--- IndentationError
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  data1 = []
  for k in medals:
        data1.append((-medals[k][0], -medals[k][1], -medals[k][2], k))
  data1.sort()
  data2 = []
  data2.append(data1[0])
  data2.append(data1[1])
  data2.append(data1[2])
  data2.append(data1[3])
  data2.append(data1[4])
  for i in range(5,len(data1)) :
      if data2[4][0] == data1[i][0] and data2[4][1] == data1[i][1] and data2[4][2] == data1[i][2] :
          data2.append(data1[i])
      else :
          break
  for j in range(len(data2)):
    topfive.append((data2[j][-1], -data2[j][0], -data2[j][1],-data2[j][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2 != 0 :
     start2 = start + 1
  else :
     start2 = start
  if end%2 != 0 :
     end2 = end - 1
  else :
      end2 = end
  while start2 <= end2 :
      D = []
      x = get_medals_by_team(athletes_by_Year_NOC, str(start2))
      if NOC in x :
          y = x[NOC]
      else :
          start2 = start2 + 2
          continue
      D.append(str(start2))
      start2 = start2 + 2
      D.append(y[0])
      D.append(y[1])
      D.append(y[2])
      D = tuple(D)
      trend.append(D)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if 2000 <= int(year) and int(year) <= 2016 :
      if NOC in athletes_by_Year_NOC[year] :
          x = athletes_by_Year_NOC[year][NOC]
          for i in range(len(x)) :
              if x[i]['Medal'] != 'NA' :
                  sports.add(x[i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = list(NOCs)
  x = get_sports(athletes_by_Year_NOC, a[0], year)
  for i in range(1,len(NOCs)) :
      y = get_sports(athletes_by_Year_NOC, a[i], year)
      sports = x.intersection(y)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530284521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1008, 'const': 1270, 'code+const': 2278}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    noc = data[i][7]; year = data[i][9]
    d = {}
    for k in range(15):
         d[data[0][k]] = data[i][k]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {noc:[d]}
    elif noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = [d]
    else:
       athletes_by_Year_NOC[year][noc] += [d]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if '2000' <= year <= '2016':
    m = athletes_by_Year_NOC[year]
    for noc,info in m.items():
      gold = 0; silver = 0; bronze = 0
      for j in info:
          if j['Medal'] == 'Gold':
              gold += 1
          elif j['Medal'] == 'Silver':
              silver += 1
          elif j['Medal'] == 'Bronze':
              bronze += 1
      medals[noc] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  vote = []
  for i in medals:
    t = []
    for j in range(len(medals[i])):
      t.append(medals[i][j]*(-1))
    t.append(i) 
    vote.append(t)
  vote.sort()
  c = 5
  for i in range(4,len(vote)-1):
    if vote[i][:3] == vote[i+1][:3]:
      c += 1
    else: break
  votes = vote[:c]
  for i in votes:
    n = (i[3],) + (abs(i[0]),) + (abs(i[1]),) + (abs(i[2]),)
    topfive.append(n)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2 == 1:
    start += 1
  for i in range(start,end+1,2):
    s = get_medals_by_team(athletes_by_Year_NOC, str(i))
    if NOC not in s: continue
    else:
       trend.append((str(i),)+(s[NOC]))   
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if '2000' < year > '2016' or NOC not in athletes_by_Year_NOC[year]:
      return sports
  s = athletes_by_Year_NOC[year][NOC]
  for i in s:
    if i['Medal'] != 'NA':
      sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if '2000' <= year <= '2016':
    sp = []
    for i in NOCs:
      s = get_sports(athletes_by_Year_NOC, i, year)
      sp += list(s)
    for i in range(len(sp)):
      n = 1
      for j in range(i+1,len(sp)):
        if sp[i] == sp[j]:
          n += 1
        if n == len(NOCs):
          sports.add(sp[i])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530302121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 978, 'const': 1297, 'code+const': 2275}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
        inner_dict = dict(zip(data[0],data[i]))
        if inner_dict['Year'] not in athletes_by_Year_NOC.keys():
            athletes_by_Year_NOC[inner_dict['Year']] = {}
        if inner_dict['NOC'] not in athletes_by_Year_NOC[inner_dict['Year']].keys():
            athletes_by_Year_NOC[inner_dict['Year']][inner_dict['NOC']]=[]
        athletes_by_Year_NOC[inner_dict['Year']][inner_dict['NOC']].append(inner_dict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  a = athletes_by_Year_NOC[year].keys()
  c = athletes_by_Year_NOC[year]
  for x in a:
      g = 0; s = 0; b = 0
      for y in c[x]:
          if y['Medal']=='Gold':g+=1
          elif y['Medal']=='Silver':s+=1
          elif y['Medal']=='Bronze':b+=1
          else:pass
      medals[x]=(g, s, b)
  return medals
#======================================
def get_top_five(medals):
    topfive = []; l = []
    for x in medals.keys():
        a = (medals[x][0], medals[x][1], medals[x][2], x, medals[x])
        l.append(a)
    l.sort(reverse=True)
    for x in l:
        if len(topfive) == 0:
            topfive.append((x[3],x[0],x[1],x[2]))
        elif x[:3]==topfive[-1][1:]:
            topfive.append((x[3],x[0],x[1],x[2]))
        elif x[:3]!=topfive[-1][1] and len(topfive)<5:
            topfive.append((x[3],x[0],x[1],x[2]))
        else:break
    topfive = sorted(topfive,key=lambda x:(-x[1],-x[2],-x[3],x[0])) 
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
        if i%2==0:
            d = get_medals_by_team(athletes_by_Year_NOC,str(i))
            if NOC in d.keys():
                a = d[NOC]
                trend.append((str(i),a[0],a[1],a[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if  1999<int(year)<2017:
      if NOC in athletes_by_Year_NOC[year]:
          x = athletes_by_Year_NOC[year][NOC]
          for y in x:
              if y['Medal']!='NA':
                  sports.add(y['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set(); n=0
    for x in NOCs:
        if n==0:
            n=1
            y = get_sports(athletes_by_Year_NOC, x, year)
            sports = sports.union(y)
        else:
            y = get_sports(athletes_by_Year_NOC, x, year)
            sports = sports.intersection(y)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530303821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1052, 'const': 1189, 'code+const': 2241}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    ans = {}
    for j in range(len(data[0])):
      ans[data[0][j]] = data[i][j]
    if data[i][9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[]} 
    else:
      if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(ans)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for i in range(len(athletes_by_Year_NOC[year][noc])):
        if athletes_by_Year_NOC[year][noc][i]['Medal'] == 'Gold':
          g+=1
        elif athletes_by_Year_NOC[year][noc][i]['Medal'] == 'Silver':
          s+=1
        elif athletes_by_Year_NOC[year][noc][i]['Medal'] == 'Bronze':
          b+=1
    medals[noc] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  pre = []
  for e in medals:
    g,s,b = medals[e]
    pre.append([-g,-s,-b,e])
  pre.sort()
  for i in range(len(pre)):
    if pre[i][:3] <= pre[4][:3]:
      topfive.append((pre[i][3],-pre[i][0],-pre[i][1],-pre[i][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  if 2000 <= start <= 2016 and 2000 <= end <= 2016:
    if start%2 == 1: start += 1
    if end%2 == 1: end -= 1
    trend = []
    for i in range(start,end+1,2):
      list_ = []
      if NOC in athletes_by_Year_NOC[str(i)]:
        list_ = athletes_by_Year_NOC[str(i)][NOC]
      g=0 ; s=0 ; b=0
      for e in list_ :
        if e['Medal'] == 'Gold':
          g += 1
        elif e['Medal'] == 'Silver':
          s += 1
        elif e['Medal'] == 'Bronze':
          b += 1
      if list_ == []:pass
      else:
        trend.append((str(i),g,s,b))
    return trend
  else:
    return {}
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  if NOC in athletes_by_Year_NOC[year]:
    for e in athletes_by_Year_NOC[year][NOC]:
      if e['Medal'] != 'NA':
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  met = True
  for NOC in NOCs:
    if met == True:
      sports = get_sports(athletes_by_Year_NOC, NOC, year)
      met = False
    sports &= get_sports(athletes_by_Year_NOC, NOC, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530325621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1268, 'const': 829, 'code+const': 2097}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {} # year -> 9 , NOC -> 7
    for i in range(1,len(data)):
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {}
        if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    for i in range(1,len(data)):
        adding = {}
        for a in data[0]:
            adding[a] = data[i][data[0].index(a)]
        if data[i][9] in athletes_by_Year_NOC and data[i][7] in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]].append(adding)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {} ; med = ['Gold','Silver','Bronze']
    for a in athletes_by_Year_NOC[year]:
        medals[a] = [0,0,0]
    for a in athletes_by_Year_NOC[year]:
        for b in athletes_by_Year_NOC[year][a]:
            if b['Medal'] in med:
                medals[a][med.index(b['Medal'])] += 1
    for a in medals:
        medals[a] = tuple(medals[a])
    return medals
#======================================
def get_top_five(medals):
    topfive = [] ; out = []
    for a in medals:
        medals[a] = list(medals[a])
    think = []
    for a in medals:
        think.append([medals[a],a])
    for i in range(len(think)):
        s = think[i][0]
        think[i][0] = []
        for e in s:
            think[i][0].append(-e)
    think.sort()
    if len(think) < 5:
        k = []
        for i in range(len(think)):
            k.append(think[i])
    else:
        k = []
        for i in range(0,5):
            k.append(think[i])
        c = k[4][0]
        for i in range(5,len(think)):
            if think[i][0] == c:
                k.append(think[i])
    # last process
    for i in range(len(k)):
        n = k[i][0]
        k[i][0] = []
        for e in n:
            k[i][0].append(-e)
        k[i][0],k[i][1] = k[i][1],k[i][0]
    for i in range(len(k)):
        t = (k[i][0],) + tuple(k[i][1])
        topfive.append(t)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = [] # { year:  {NOC: [ {'ID':..., 'Name': ..., ... }, ... ], ...}, ... }
    if start % 2 != 0:
        start += 1
    if end % 2 != 0:
        end -= 1
    for x in range(start,end+1,2): # x = interested YEAR
        if NOC in athletes_by_Year_NOC[str(x)]:        
              t = get_medals_by_team(athletes_by_Year_NOC,str(x))[NOC]
              t = (str(x),) + t
              trend.append(t)   
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in  athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        lisofd = athletes_by_Year_NOC[year][NOC]
        for e in lisofd:
            if e['Medal'] != 'NA':
                sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    if len(NOCs) == 1:
        for a in NOCs:
            return get_sports(athletes_by_Year_NOC,a,year)
    if len(NOCs) == 0:
        return set()
    sports = [] 
    for a in NOCs:
        sports.append(get_sports(athletes_by_Year_NOC, a, year))
    think = sports[0]
    for i in range(1,len(sports)):
        result = think & sports[i]
        think = result
    return result
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530328521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1050, 'const': 1033, 'code+const': 2083}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        d = {}
        for j in range(15):
            d[data[0][j]] = data[i][j] 
        if d['Year'] not in athletes_by_Year_NOC: #ใส่ปี
            athletes_by_Year_NOC[d['Year']] = {}
        if d['NOC'] not in athletes_by_Year_NOC[d['Year']]: #ใส่ NOC
            athletes_by_Year_NOC[d['Year']][d['NOC']] = []
        athletes_by_Year_NOC[d['Year']][d['NOC']].append(d)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for e1 in athletes_by_Year_NOC[year]: #e1 is NOC
        c = [0,0,0]
        for e2 in range(len(athletes_by_Year_NOC[year][e1])): #e2 is dict
            if athletes_by_Year_NOC[year][e1][e2]['Medal'] == 'Gold':
                c[0] += 1
            elif athletes_by_Year_NOC[year][e1][e2]['Medal'] == 'Silver':
                c[1] += 1
            elif athletes_by_Year_NOC[year][e1][e2]['Medal'] == 'Bronze':
                c[2] += 1
        medals[e1] = tuple(c)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    check1 = []
    for k in medals:
        check1.append((-medals[k][0], -medals[k][1], -medals[k][2], k))
    check1.sort()
    a = 0
    b = 0
    c = 0
    for e in check1:
        if topfive == []:
            topfive.append((e[3], -e[0], -e[1], -e[2]))
        elif len(topfive) < 5:
            topfive.append((e[3], -e[0], -e[1], -e[2]))
            a = e[0]
            b = e[1]
            c = e[2]
        elif len(topfive) >= 5 and e[0] == a and e[1] == b and e[2] == c:
            topfive.append((e[3], -e[0], -e[1], -e[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if start%2 == 1:
        a = start +1
    else:
        a = start
    if end%2 == 1:
        b = end - 1
    else:
        b = end
    r = b-a +1
    for i in range(0,r,2):
        if NOC in athletes_by_Year_NOC[str(a + i)]:
            t = get_medals_by_team(athletes_by_Year_NOC, str(a + i))[NOC]
            trend.append((str(a + i), t[0], t[1], t[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for e in athletes_by_Year_NOC[year][NOC]:
            if e['Medal'] != 'NA':
                sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    check = []
    for e in NOCs:
        check.append(get_sports(athletes_by_Year_NOC, e, year))
    for k in check:
        sports = sports | k
    for k in check:
        sports = sports & k
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530354821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 956, 'const': 1292, 'code+const': 2248}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for a in data[1:]:
    NOC = a[7]
    year = a[9]
    if year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[year] = {NOC:[]}
    elif NOC not in athletes_by_Year_NOC[year] :
      athletes_by_Year_NOC[year][NOC] = []
    athlete = {}
    for i in range(15) :
      athlete[data[0][i]] = a[i]
    athletes_by_Year_NOC[year][NOC].append(athlete)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for k, v in athletes_by_Year_NOC[year].items() :
    gold = 0
    silver = 0
    bronze = 0
    for a in v:
      if a['Medal'] == 'Gold' :
        gold += 1
      elif a['Medal'] == 'Silver' :
        silver += 1
      elif a['Medal'] == 'Bronze' :
        bronze += 1
    medals[k] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  d = {}
  for k, v in medals.items() :
    if v not in d :
      d[v] = []
    d[v].append(k)
  val = list(d.keys())
  val.sort()
  val.reverse()
  i=0
  while len(topfive) < 5 and i<len(val) :
    countries = d[val[i]]
    countries.sort()
    for country in countries :
      topfive.append((country, val[i][0], val[i][1], val[i][2]))
    i+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  a = start
  b = end
  if a % 2 :
    a += 1
  if b % 2 :
    b -= 1
  while a <= b :
    year = str(a)
    if NOC in athletes_by_Year_NOC[year] :
      athletes = athletes_by_Year_NOC[year][NOC]
      gold = 0
      silver = 0
      bronze = 0
      for athlete in athletes :
        if athlete['Medal'] == 'Gold' :
          gold += 1
        elif athlete['Medal'] == 'Silver' :
          silver += 1
        elif athlete['Medal'] == 'Bronze' :
          bronze += 1
      trend.append((year, gold, silver, bronze))
    a += 2
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
    athletes = athletes_by_Year_NOC[year][NOC]
    for a in athletes:
      if a['Medal'] != 'NA' :
        sports.add(a['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  ch = True
  for NOC in NOCs :
    sport = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
      athletes = athletes_by_Year_NOC[year][NOC]
      for a in athletes:
        if a['Medal'] != 'NA' :
          sport.add(a['Sport'])
    if ch :
      sports |= sport
      ch = False
    else :
      sports &= sport
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530362821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1114, 'const': 1008, 'code+const': 2122}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  info = {}
  for i in range(len(data)-1):
    if data[i+1][9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[data[i+1][9]] = {}
    if data[i+1][7] not in athletes_by_Year_NOC[data[i+1][9]]:
      athletes_by_Year_NOC[data[i+1][9]][data[i+1][7]] = []
    for j in range(len(data[0])):
      info[data[0][j]] = data[i+1][j]
    athletes_by_Year_NOC[data[i+1][9]][data[i+1][7]].append(info)
    info = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return medals
  for i in athletes_by_Year_NOC[year]:
    if i not in medals:
      medals[i] = [0,0,0]
    for j in athletes_by_Year_NOC[year][i]:
      if j['Medal'] == 'Gold':
        medals[i][0] += 1
      elif j['Medal'] == 'Silver':
        medals[i][1] += 1
      elif j['Medal'] == 'Bronze':
        medals[i][2] += 1
  for k in medals:
    medals[k] = tuple(medals[k])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals_s = {}
  info = []
  for i in medals:
    info.append([(-1)*medals[i][0], (-1)*medals[i][1], (-1)*medals[i][2], i])
  info.sort()
  info1 = []
  for j in info:
    info1.append((j[3], abs(j[0]), abs(j[1]), abs(j[2])))
  for k in range(len(info1)):
    if len(topfive) < 5:
      topfive.append(info1[k])
    elif info1[k][1] == info1[k-1][1] and info1[k][2] == info1[k-1][2] and info1[k][3] == info1[k-1][3]:
      topfive.append(info1[k])
    else: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2 != 0: start += 1
  if end%2 != 0: end -= 1
  for i in range(start,end+1,2):
    if NOC not in athletes_by_Year_NOC[str(i)]: continue
    a = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
    trend.append((str(i), a[0], a[1], a[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  if NOC not in athletes_by_Year_NOC[year]:
    return sports
  info = athletes_by_Year_NOC[year][NOC]
  for i in info:
    if i['Medal'] != 'NA':
      sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  sports = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
  for i in range(len(NOCs)):
    a = get_sports(athletes_by_Year_NOC, list(NOCs)[i], year)
    sports = sports.intersection(a)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530410221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1458, 'const': 1131, 'code+const': 2589}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  x={}
  d=data
  for i in range(1,len(d)):
    if d[i][9] in x:
      pass
    else:
      if int(data[i][9])%2==0:
        y={}
        for j in range(1,len(d)):
          if d[j][9]==d[i][9]:
            if d[j][7] not in y:
              y[d[j][7]]=[]   
            z={}
            for e in range(len(d[0])):
              z[d[0][e]]=d[j][e]
            y[d[j][7]].append(z)
            z={}
        x[d[i][9]]=y
  athletes_by_Year_NOC=x
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d=athletes_by_Year_NOC
  for i in range(len(d[year])):
    for n in d[year]:
      g=0
      s=0
      b=0
      for j in range(len(d[year][n])):
        if d[year][n][j]['Medal']=='Gold':
          g+=1
        elif d[year][n][j]['Medal']=='Silver':
          s+=1
        elif d[year][n][j]['Medal']=='Bronze':
          b+=1
        t=(g,s,b)
        medals[n]=t
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  newmedals=[]
  for i in medals:
    newmedals.append([-medals[i][0],-medals[i][1],-medals[i][2],i])
  newmedals.sort()
  x=newmedals
  i=5
  if len(x)<=5:
    for g in range(len(x)):
      topfive.append((x[g][3],-x[g][0],-x[g][1],-x[g][2]))
    return topfive
  else:
    for e in range(5):
      if e<4:
        topfive.append((x[e][3],-x[e][0],-x[e][1],-x[e][2]))
      else:
        topfive.append((x[e][3],-x[e][0],-x[e][1],-x[e][2]))
        if i<len(x)-1:
          while x[i][0:3]==x[i-1][0:3]:
            topfive.append((x[i][3],-x[i][0],-x[i][1],-x[i][2]))
            i+=1      
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  s=start
  e=end
  x=athletes_by_Year_NOC
  if s%2!=0:
    s+=1
  if e%2!=0:
    e-=1
  s2=s
  while s2<=e:
    if NOC in x[str(s2)]:
      y=get_medals_by_team(x, str(s2))
      t=(str(s2),y[NOC][0],y[NOC][1],y[NOC][2])
      trend.append(t)
    s2+=2
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  x=athletes_by_Year_NOC
  if year in x:
    if NOC in x[year]:
      for i in range(len(x[year][NOC])):
        if x[year][NOC][i]['Medal']!='NA':
          sports.add(x[year][NOC][i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  c=[]
  x=athletes_by_Year_NOC
  if year in x:
    for i in NOCs:
      if i in x[year]:
        s=set()
        for j in range(len(x[year][i])):
          if x[year][i][j]['Medal']!='NA':
            s.add(x[year][i][j]['Sport'])
        c.append(s)
  if len(c)==0:
    return sports
  else:
    ss=c[0]
    for e in range(1,len(c)):
      sports=ss.intersection(c[e])
      ss=sports
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530431421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 864, 'const': 1088, 'code+const': 1952}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        b = {}
        for k in range(len(data[0])):
            b[data[0][k]] = data[i][k]
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {}
        if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(b)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC in athletes_by_Year_NOC[year]:
        g = 0
        s = 0
        b = 0
        for i in athletes_by_Year_NOC[year][NOC]:
            if i['Medal'] == 'Gold':
                g += 1
            if i['Medal'] == 'Silver':
                s += 1
            if i['Medal'] == 'Bronze':
                b += 1
        s_m = [g,s,b]
        medals[NOC] = tuple(s_m)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    sm = sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))
    a = sm[:5]
    for i in range(5,len(sm)):
        if sm[i][1] == a[-1][1]:
            a.append(sm[i])
    topfive = [(k, v[0], v[1], v[2]) for k, v in a]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
        if y%2 == 0:
            mb = get_medals_by_team(athletes_by_Year_NOC, str(y))
            if NOC in mb:
                me = mb[NOC]
                trend.append((str(y),me[0],me[1],me[2]))
            else:
                pass
        else:
            pass
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC:
        return sports
    if NOC not in athletes_by_Year_NOC[year]:
        return sports
    for a in athletes_by_Year_NOC[year][NOC]:
        if a['Medal'] != 'NA':
            sports.add(a['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    p = []
    for i in NOCs:
         p.append(get_sports(athletes_by_Year_NOC,i, year))
    sports = p[0]
    for i in p[1:]:
        sports = sports.intersection(i)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532001621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 868, 'const': 1044, 'code+const': 1912}
check_import({'allowable': ['math', 'csv']}) deep: [[('re', 1)]]
from re import S
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range (1,len(data)):
    ID = {}
    for k in range(len(data[0])):
      ID[data[0][k]] = data[i][k]
    y = data[i][9] #year
    n = data[i][7] #NOC
    if y not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[y]= {n:[ID]}
    else:
      if n not in athletes_by_Year_NOC[y]:
        athletes_by_Year_NOC[y][n] = [ID]
      else:
        athletes_by_Year_NOC[y][n].append(ID)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d_n = athletes_by_Year_NOC[year]
  g = 0
  s = 0
  b = 0
  for i in d_n:
    for j in d_n[i]:
      if j['Medal'] == 'Gold':
        g+=1
      elif j['Medal'] == 'Silver':
        s+=1
      elif j['Medal'] == 'Bronze':
        b+=1
      medals[i] = (g,s,b)
    g = 0
    s = 0
    b = 0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medal_mock ={}
  for c in medals:
    if medals[c] in medal_mock :
      medal_mock[medals[c]].append(c)
      medal_mock[medals[c]].sort()
    else :
      medal_mock[medals[c]] = [c]
  i= 0
  while i<5:
    max_medal = max(medal_mock)
    for e in medal_mock[max_medal]:
      topfive.append((e,)+max_medal)
      i+=1
    medal_mock.pop(max_medal)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start,end+1):
    if y%2 ==0:
      if NOC in athletes_by_Year_NOC[str(y)]:
        medal=get_medals_by_team(athletes_by_Year_NOC, str(y))[NOC]
        trend.append((str(y),)+medal)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC not in athletes_by_Year_NOC[year]:
      return set()
    else:
      for s in athletes_by_Year_NOC[year][NOC]:
        if s['Medal'] == 'Gold' or s['Medal'] == 'Silver' or s['Medal'] == 'Bronze':
          sports.add(s['Sport'])
  else:
    return set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return set()
  else:
    for s in range(len(NOCs)):
      i = 0
      for e in NOCs:
        if i == 0:
          sports = sports.union(get_sports(athletes_by_Year_NOC, e, year))
          i+=1
        else:
          sports = sports.intersection(get_sports(athletes_by_Year_NOC, e, year))
          i+=1   
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532002221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67UnboundLocalError("local variable 'e' referenced before assignment")
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1038, 'const': 940, 'code+const': 1978}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    ID, Name, Sex, Age, Height, Weight, Team, NOC, Games, Year, Season, City, Sport, Event, Medal = data[i]
    if Year in athletes_by_Year_NOC : 
      if NOC in athletes_by_Year_NOC[Year]:
          athletes_by_Year_NOC[Year][NOC].append({'ID':ID, 'Name':Name, 'Sex':Sex, 'Age':Age, 'Height':Height, 
                                                  'Weight':Weight, 'Team':Team, 'NOC':NOC, 'Games':Games, 'Year':Year, 
                                                  'Season':Season, 'City':City, 'Sport':Sport, 'Event':Event, 'Medal':Medal})
      else:
          athletes_by_Year_NOC[Year][NOC] = [{'ID':ID, 'Name':Name, 'Sex':Sex, 'Age':Age, 'Height':Height, 
                                              'Weight':Weight, 'Team':Team, 'NOC':NOC, 'Games':Games, 'Year':Year, 
                                              'Season':Season, 'City':City, 'Sport':Sport, 'Event':Event, 'Medal':Medal}]
    else:
        athletes_by_Year_NOC[Year] = {}
        athletes_by_Year_NOC[Year][NOC] = [{'ID':ID, 'Name':Name, 'Sex':Sex, 'Age':Age, 'Height':Height, 
                                            'Weight':Weight, 'Team':Team, 'NOC':NOC, 'Games':Games, 'Year':Year, 
                                            'Season':Season, 'City':City, 'Sport':Sport, 'Event':Event, 'Medal':Medal}]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
    G = 0 ; S = 0 ; B = 0
    for e in athletes_by_Year_NOC[year][i]:
      if e['Medal'] == 'Gold': G += 1
      elif e['Medal'] == 'Silver': S += 1
      elif e['Medal'] == 'Bronze': B += 1
    medals[i] = (G,S,B)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  t = []
  for e in medals:
    G,S,B = medals[e]
    t.append([-G,-S,-B,e])
  t.sort()
  topfive = list(t[0:5])
  for i in range(5,len(t)):
    if t[i][0:3] == topfive[-1][0:3]:
      topfive.append(t[i])
    else:
      break
  topfive = [(e,-a,-b,-c) for [a,b,c,e] in topfive]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  y = [int(e) for e in list(athletes_by_Year_NOC.keys())] ; ymin = min(y) ; ymax = max(y)
  if start in y : s = start
  elif start %2 != 0 and start in range(ymin,ymax + 1): s = start + 1
  if end in y : e = end
  elif end %2 != 0 and end in range(ymin,ymax + 1): e = end - 1
  for i in range(s,e+1,2):
    d = get_medals_by_team(athletes_by_Year_NOC,str(i))
    if NOC in d:
      g,s,b = d[NOC]
      trend.append((str(i),g,s,b))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    at_NOC_Year = athletes_by_Year_NOC[year][NOC]
    for d in at_NOC_Year:
      if d['Medal'] != 'NA':
        sports.add(d['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  n = sorted(NOCs)
  s = get_sports(athletes_by_Year_NOC, n[0], year)
  for i in range(len(n)):
    s = s & get_sports(athletes_by_Year_NOC, n[i], year)
  sports = s
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532012521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 776, 'const': 992, 'code+const': 1768}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for c in data[1:]:
        year = c[9]
        noc = c[7]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = dict()
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = list()
        d = {}
        for i in range(len(data[0])):
            d[data[0][i]] = c[i]
        athletes_by_Year_NOC[year][noc].append(d)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if int(year) % 2 == 0:
        for e in athletes_by_Year_NOC[year]:
          Gold = 0
          Silver = 0
          Bronze = 0
          for c in athletes_by_Year_NOC[year][e]:
              if c['Medal'] == 'Gold':
                  Gold += 1
              elif c['Medal'] == 'Silver':
                  Silver += 1
              elif c['Medal'] == 'Bronze':
                  Bronze += 1
          medals[e] = (Gold, Silver, Bronze)
  return medals
#======================================
def get_top_five(medals):
    top_five = []
    rank_by_medal = dict()
    for country, medal_list in medals.items():
        if medal_list not in rank_by_medal:
            rank_by_medal[medal_list] = []
        rank_by_medal[medal_list].append(country)
    for rank in sorted(rank_by_medal.keys(), reverse=True):
        if len(top_five) >= 5:
            break
        for country in sorted(rank_by_medal[rank]):
            top_five.append((country, rank[0], rank[1], rank[2]))
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    end+=1
    for year in range(start, end):
        if year % 2 == 0:
          check = get_medals_by_team(athletes_by_Year_NOC, str(year))
          if NOC in check:
              medals = check[NOC]
              trend.append((str(year), medals[0], medals[1], medals[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
        return sports
    for e in athletes_by_Year_NOC[year][NOC]:
        if e['Medal'] != 'NA':
            sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sports_by_noc = list()
    for NOC in NOCs:
        sports_by_noc.append(get_sports(athletes_by_Year_NOC, NOC, year))
    sports = sports_by_noc[0]
    s = 1
    for sport_set in sports_by_noc[s:]:
        sports = sports.intersection(sport_set)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532032021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 3030, 'const': 20965, 'code+const': 23995}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  keys = data[0]
  for ath in data[1:]:
    year = ath[9]
    noc = ath[7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    athlete_data = {}
    for i in range(15):
      athlete_data[keys[i]] = ath[i]
    athletes_by_Year_NOC[year][noc].append(athlete_data)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC : 
    teams = athletes_by_Year_NOC[year]
    for noc, athletes in teams.items():
      medal = {'Gold':0, 'Silver':0, 'Bronze':0}
      for ath in athletes:
        if ath['Medal'] != 'NA':
          medal[ath['Medal']]+=1
      medals[noc] = (medal['Gold'], medal['Silver'], medal['Bronze'])
    return medals
  else : 
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  nocs = []
  for noc in medals:
    nocs.append(noc)
  nocs.sort(reverse=True)
  nocs_medal = []
  for i in range(len(nocs)):
    noc = nocs[i]
    medal = list(medals[noc])
    medal.append(i)
    nocs_medal.append(medal)
  nocs_medal.sort(reverse=True)
  ans = nocs_medal[:5]
  i = 5
  while i<len(nocs_medal):
    if nocs_medal[i][0] != ans[-1][0] or nocs_medal[i][1] != ans[-1][1] or nocs_medal[i][2] != ans[-1][2]:
      break
    ans.append(nocs_medal[i])
    i+=1
  for a in ans:
    noc = nocs[a[-1]]
    topfive.append((noc, a[0], a[1], a[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  s=start
  e=end
  if s%2==1:
    s+=1
  if e%2==1:
    e-=1
  for i in range(s, e+2, 2):
    year = str(i)
    if NOC not in athletes_by_Year_NOC[year]:
      continue
    athletes = athletes_by_Year_NOC[year][NOC]
    medal = {'Gold':0, 'Silver':0, 'Bronze':0}
    for ath in athletes:
      if ath['Medal'] != 'NA':
        medal[ath['Medal']]+=1
    trend.append((year, medal['Gold'], medal['Silver'], medal['Bronze']))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
    return sports
  athletes = athletes_by_Year_NOC[year][NOC]
  for ath in athletes:
    if ath['Medal'] != 'NA':
      sports.add(ath['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  i=1
  for NOC in NOCs:
    sport = get_sports(athletes_by_Year_NOC, NOC, year)
    if i==1:
      sports|=sport
      i+=1
    else:
      sports&=sport
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def test_1():
  assert len(d['2000']['THA']) == 68
  assert d['2000']['THA'][0] == {'ID': '21596', 'Name': 'Somchai Cimlum', 'Sex': 'M', 'Age': '24', 'Height': '179', 'Weight': '73', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Boxing', 'Event': "Boxing Men's Middleweight", 'Medal': 'NA'}
  assert d['2000']['THA'][1] == {'ID': '27067', 'Name': 'Saipin Dejsaeng', 'Sex': 'F', 'Age': '23', 'Height': '159', 'Weight': '62', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Weightlifting', 'Event': "Weightlifting Women's Middleweight", 'Medal': 'NA'}
  assert d['2000']['THA'][2] == {'ID': '31865', 'Name': 'Sujitra Ekmongkolpaisarn', 'Sex': 'F', 'Age': '23', 'Height': '172', 'Weight': '50', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Badminton', 'Event': "Badminton Women's Singles", 'Medal': 'NA'}
  assert d['2000']['THA'][3] == {'ID': '31865', 'Name': 'Sujitra Ekmongkolpaisarn', 'Sex': 'F', 'Age': '23', 'Height': '172', 'Weight': '50', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Badminton', 'Event': "Badminton Women's Doubles", 'Medal': 'NA'}
  assert d['2000']['THA'][4] == {'ID': '49680', 'Name': 'Arun Homraruen', 'Sex': 'M', 'Age': '30', 'Height': '174', 'Weight': '64', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Sailing', 'Event': "Sailing Men's Windsurfer", 'Medal': 'NA'}
def test_2():
  m_2 = get_medals_by_team(d, '2001')
  assert m_2 == {}
  assert len(m) == 200
  assert m == {'FIN': (3, 1, 1), 'NOR': (20, 4, 19), 'NED': (27, 29, 23), 'EGY': (0, 0, 0), 'ARG': (0, 17, 3), 'CUB': (18, 35, 12), 'CMR': (18, 0, 0), 'MEX': (1, 2, 3), 'ITA': (22, 14, 29), 'PAK': (0, 0, 0), 'AZE': (2, 0, 1), 'CAN': (4, 4, 23), 'USA': (130, 61, 51), 'AUS': (60, 69, 54), 'KUW': (0, 0, 1), 'MAS': (0, 0, 0), 'BRU': (0, 0, 0), 'SUD': (0, 0, 0), 'BRN': (0, 0, 0), 'UZB': (1, 1, 2), 'JPN': (5, 31, 8), 'ESP': (3, 19, 20), 'ETH': (4, 1, 3), 'SRI': (0, 1, 0), 'SYR': (0, 0, 0), 'MAR': (0, 1, 4), 'SWE': (4, 20, 8), 'RUS': (66, 67, 54), 'JOR': (0, 0, 0), 'CHN': (39, 23, 17), 'GER': (31, 23, 64), 'GBR': (22, 20, 12), 'UGA': (0, 0, 0), 'SLO': (3, 0, 0), 'TUR': (3, 0, 2), 'RSA': (0, 2, 3), 'GHA': (0, 0, 0), 'ALG': (1, 1, 3), 'SUR': (0, 0, 0), 'SOM': (0, 0, 0), 'LBA': (0, 0, 0), 'FRA': (22, 30, 14), 'PLW': (0, 0, 0), 'LTU': (2, 0, 15), 'BRA': (0, 12, 36), 'UKR': (3, 20, 12), 'IRI': (3, 0, 1), 'NGR': (6, 2, 0), 'GRE': (4, 6, 8), 'CRO': (1, 0, 9), 'DMA': (0, 0, 0), 'DEN': (18, 3, 4), 'ANG': (0, 0, 0), 'IRQ': (0, 0, 0), 'MDV': (0, 0, 0), 'NZL': (1, 0, 3), 'PER': (0, 0, 0), 'SCG': (11, 1, 13), 'HUN': (25, 24, 4), 'CIV': (0, 0, 0), 'CYP': (0, 0, 0), 'KAZ': (3, 4, 0), 'KGZ': (0, 0, 1), 'BAN': (0, 0, 0), 'KSA': (0, 1, 1), 'QAT': (0, 0, 1), 'LIB': (0, 0, 0), 'OMA': (0, 0, 0), 'PLE': (0, 0, 0), 'YEM': (0, 0, 0), 'UAE': (0, 0, 0), 'ROU': (27, 6, 13), 'BLR': (3, 8, 11), 'TTO': (0, 1, 1), 'ISL': (0, 0, 1), 'NIG': (0, 0, 0), 'DJI': (0, 0, 0), 'SVK': (2, 3, 1), 'GUY': (0, 0, 0), 'JAM': (0, 20, 3), 'BAR': (0, 0, 1), 'VEN': (0, 0, 0), 'CHI': (0, 0, 17), 'IOA': (0, 0, 0), 'AUT': (3, 1, 0), 'INA': (2, 4, 2), 'BAH': (6, 0, 5), 'SMR': (0, 0, 0), 'MOZ': (1, 0, 0), 'POR': (0, 0, 2), 'CZE': (2, 3, 4), 'IND': (0, 0, 1), 'BUL': (5, 6, 2), 'SUI': (1, 11, 2), 'BEL': (0, 3, 4), 'MLT': (0, 0, 0), 'LUX': (0, 0, 0), 'GBS': (0, 0, 0), 'TUN': (0, 0, 0), 'GEO': (0, 0, 6), 'ERI': (0, 0, 0), 'TKM': (0, 0, 0), 'MAD': (0, 0, 0), 'MRI': (0, 0, 0), 'EST': (1, 0, 2), 'ISR': (0, 0, 1), 'ARM': (0, 0, 1), 'KEN': (2, 3, 2), 'MGL': (0, 0, 0), 'KOR': (12, 26, 35), 'GUI': (0, 0, 0), 'CGO': (0, 0, 0), 'POL': (7, 10, 7), 'VIN': (0, 0, 0), 'TOG': (0, 0, 0), 'ECU': (0, 0, 0), 'SEY': (0, 0, 0), 'URU': (0, 1, 0), 'GEQ': (0, 0, 0), 'ANT': (0, 0, 0), 'BOT': (0, 0, 0), 'SKN': (0, 0, 0), 'PAN': (0, 0, 0), 'COM': (0, 0, 0), 'TAN': (0, 0, 0), 'COL': (1, 0, 0), 'ISV': (0, 0, 0), 'SLE': (0, 0, 0), 'LAT': (1, 1, 1), 'AND': (0, 0, 0), 'MON': (0, 0, 0), 'SWZ': (0, 0, 0), 'ARU': (0, 0, 0), 'MDA': (0, 1, 1), 'ZIM': (0, 0, 0), 'CRC': (0, 0, 2), 'GUA': (0, 0, 0), 'NEP': (0, 0, 0), 'PNG': (0, 0, 0), 'MKD': (0, 0, 1), 'GAB': (0, 0, 0), 'SGP': (0, 0, 0), 'IRL': (0, 1, 0), 'PHI': (0, 0, 0), 'BER': (0, 0, 0), 'PUR': (0, 0, 0), 'ZAM': (0, 0, 0), 'DOM': (0, 0, 0), 'BOL': (0, 0, 0), 'MLI': (0, 0, 0), 'PAR': (0, 0, 0), 'HON': (0, 0, 0), 'PRK': (0, 1, 3), 'HKG': (0, 0, 0), 'TPE': (0, 1, 4), 'MYA': (0, 0, 0), 'MAW': (0, 0, 0), 'GUM': (0, 0, 0), 'BHU': (0, 0, 0), 'THA': (1, 0, 2), 'SEN': (0, 0, 0), 'HAI': (0, 0, 0), 'IVB': (0, 0, 0), 'CAF': (0, 0, 0), 'LBR': (0, 0, 0), 'NCA': (0, 0, 0), 'BEN': (0, 0, 0), 'AHO': (0, 0, 0), 'MTN': (0, 0, 0), 'ESA': (0, 0, 0), 'CPV': (0, 0, 0), 'TJK': (0, 0, 0), 'BIH': (0, 0, 0), 'GAM': (0, 0, 0), 'LIE': (0, 0, 0), 'NAM': (0, 0, 0), 'RWA': (0, 0, 0), 'STP': (0, 0, 0), 'BDI': (0, 0, 0), 'CAM': (0, 0, 0), 'LCA': (0, 0, 0), 'SOL': (0, 0, 0), 'GRN': (0, 0, 0), 'SAM': (0, 0, 0), 'BIZ': (0, 0, 0), 'COD': (0, 0, 0), 'VAN': (0, 0, 0), 'LES': (0, 0, 0), 'LAO': (0, 0, 0), 'TGA': (0, 0, 0), 'ALB': (0, 0, 0), 'VIE': (0, 1, 0), 'CAY': (0, 0, 0), 'FSM': (0, 0, 0), 'ASA': (0, 0, 0), 'CHA': (0, 0, 0), 'FIJ': (0, 0, 0), 'BUR': (0, 0, 0), 'NRU': (0, 0, 0), 'COK': (0, 0, 0)}
def test_3():
  d_mock = convert_to_dict(data_mock)
  m_mock = get_medals_by_team(d_mock, '2010')
  assert get_top_five(m) == [('USA', 130, 61, 51), ('RUS', 66, 67, 54), ('AUS', 60, 69, 54), ('CHN', 39, 23, 17), ('GER', 31, 23, 64)]
  assert get_top_five(m_mock) == [('USA', 10, 0, 0), ('GER', 2, 0, 0), ('ESP', 0, 5, 0), ('FRA', 0, 5, 0), ('EGY', 0, 1, 2), ('ITA', 0, 1, 2), ('NCA', 0, 1, 2)]
  assert get_top_five({'EGY': (10, 0, 0),'ESP': (10, 0, 0),'FRA': (10, 0, 0),'GER': (10, 0, 0),'ITA': (10, 0, 0),'NCA': (10, 0, 0),'USA': (10, 0, 0)}) == [('EGY', 10, 0, 0), ('ESP', 10, 0, 0), ('FRA', 10, 0, 0), ('GER', 10, 0, 0), ('ITA', 10, 0, 0), ('NCA', 10, 0, 0), ('USA', 10, 0, 0)]
def test_4():
  assert get_medals_trend(d, 'USA', 2001, 2015) == [('2002', 11, 58, 15), ('2004', 117, 75, 71), ('2006', 9, 11, 32), ('2008', 127, 110, 80), ('2010', 12, 63, 22), ('2012', 145, 57, 46), ('2014', 10, 30, 24)]
  assert get_medals_trend(d, 'THA', 2000, 2016) == [('2000', 1, 0, 2), ('2002', 0, 0, 0), ('2004', 3, 1, 4), ('2006', 0, 0, 0), ('2008', 2, 2, 0), ('2012', 0, 2, 1), ('2014', 0, 0, 0), ('2016', 2, 2, 2)]
def test_5():
  assert get_sports(d, 'THA', '2000') == {'Weightlifting', 'Boxing'}
  assert get_sports(d, 'THA', '2010') == set()
  assert get_sports(d, 'THA', '2020') == set()
  assert get_sports(d, 'SOM', '2000') == set()
  assert get_sports(d, 'THA', '2008') == {'Weightlifting', 'Boxing', 'Taekwondo'}
  assert get_sports(d, 'VIE', '2008') == {'Weightlifting'}
  assert get_sports(d, 'DEN', '2008') == {'Swimming', 'Equestrianism', 'Rowing', 'Sailing', 'Cycling', 'Canoeing'}
  assert get_sports(d, 'XXX', '2000') == set()
def test_6():
  assert get_common_sports(d, {'THA','VIE'}, '2008') == {'Weightlifting'}
  assert get_common_sports(d, {'THA','VIE','DEN'}, '2008') == set()
  assert get_common_sports(d, {'THA','XXX'}, '2008') == set()

6532144721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1236, 'const': 1264, 'code+const': 2500}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  dct={}
  lst=[]
  for j in range(1,len(data)):
    for i in range(15):
      dct[data[0][i]] = data[j][i]
    lst.append(dct)
    dct={}
  setnoc = set()
  for i in range(1,len(data)):
      setnoc.add(data[i][7])
  setyear = set()
  for i in range(1,len(data)):
      setyear.add(data[i][9])
  lstnoc=[]
  NOC={}
  for i in setnoc:
    for j in lst:
      if j['NOC']==i:
        lstnoc.append(j)
    NOC[i]=lstnoc
    lstnoc=[]
  YEAR={}
  lstyear=[]
  athletes_by_Year_NOC = {}
  for i in setyear:
    for j in setnoc:
      for k in NOC[j]:
        if k['Year'] == i:
          lstyear.append(k)
      if not len(lstyear)==0:
        YEAR[j] = lstyear
      lstyear=[]
    athletes_by_Year_NOC[i] = YEAR
    YEAR={}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  medaltple=()
  G=0
  S=0
  B=0
  for i in athletes_by_Year_NOC[year]:
    for j in athletes_by_Year_NOC[year][i]:
      if j['Medal'] == 'Gold':
        G+=1
      elif j['Medal'] == 'Silver':
        S+=1
      elif j['Medal'] == 'Bronze':
        B+=1
    medaltple=(G, S, B)
    medals[i] = medaltple
    G = S = B = 0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  lst=[]
  for i in medals:
    for j in medals[i]:
      medals[i]=medals[i]+(-j,)
    medals[i]=medals[i][3:]
    lst.append([medals[i], i])
  lst.sort()
  for i in lst:
    for j in i[0]:
      i[0]=i[0]+(-j,)
    i[0]=i[0][3:]
  for i in range(5,len(lst)):
    if lst[i][0] == lst[4][0]:
      pass
    else:
      lst=lst[:i]
      break
  tple=()
  for i in range(len(lst)):
    tple = tple+((lst[i][1],)+lst[i][0])
    topfive.append(tple)
    tple=()
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
    if i%2==0:
      if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)):
        m = (str(i),)+get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
        trend.append(m)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in get_medals_by_team(athletes_by_Year_NOC, year):
      m = get_medals_by_team(athletes_by_Year_NOC, year)[NOC]
      for i in athletes_by_Year_NOC[year][NOC]:
        if not i['Medal']=='NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  lstNOCs=[]
  for i in NOCs:
    lstNOCs.append(i)
  sports1=set()
  sports2=set()
  if year in athletes_by_Year_NOC:
    for i in range(len(lstNOCs)):
      if lstNOCs[i] in get_medals_by_team(athletes_by_Year_NOC, year):
        m = get_medals_by_team(athletes_by_Year_NOC, year)[lstNOCs[i]]
        for j in athletes_by_Year_NOC[year][lstNOCs[i]]:
          if not j['Medal']=='NA':
            if not i == 1:
              sports1.add(j['Sport'])
            else:
              sports2.add(j['Sport'])
      if i >= 1:
        sports2 = sports2 & sports1
  if i>=1:
    return sports2
  else:
    return sports1
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532163621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1152, 'const': 1095, 'code+const': 2247}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for y in data[1:] :
    if y[9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[y[9]] = {}
      if y[7] not in athletes_by_Year_NOC[y[9]] :
        athletes_by_Year_NOC[y[9]][y[7]] = [list_to_dict(data[0],y)] 
      else :
        athletes_by_Year_NOC[y[9]][y[7]].append(list_to_dict(data[0],y))
    else  :
      if y[7] not in athletes_by_Year_NOC[y[9]] :
        athletes_by_Year_NOC[y[9]][y[7]] = [list_to_dict(data[0],y)] 
      else :
        athletes_by_Year_NOC[y[9]][y[7]].append(list_to_dict(data[0],y))
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d = athletes_by_Year_NOC[year]
  for key,value in d.items() :
    g = 0
    s = 0
    b = 0
    for e in value :
      if e['Medal'] == 'Gold' :
        g += 1
      elif e['Medal'] == 'Silver':
        s += 1
      elif e['Medal'] == 'Bronze' :
        b += 1
      medals[key] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  tb = []
  for key,value in medals.items() :
    tb.append((value[0]*(-1),value[1]*(-1),value[2]*(-1),key,))
  tb.sort()
  for i in range(0,5) :
    topfive.append((tb[i][3],tb[i][0]*(-1),tb[i][1]*(-1),tb[i][2]*(-1)))
  n = 5
  if len(tb) > 5 :
    while tb[4][:3] == tb[n][:3] :
      topfive.append((tb[n][3],tb[n][0]*(-1),tb[n][1]*(-1),tb[n][2]*(-1)))
      n += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2 != 0 :
    Rs = start+1
  else :
    Rs = start
  if end%2 != 0 :
    Re = end-1
  else :
    Re = end
  for i in range(Rs,Re+1,2) :
    if NOC in athletes_by_Year_NOC[str(i)] :
      trend.append((str(i),)+get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for e in athletes_by_Year_NOC[year][NOC] :
        if e['Medal'] != 'NA' :
          sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = {}
  for e in NOCs :
    if e in athletes_by_Year_NOC[year] :
      for k in athletes_by_Year_NOC[year][e] :
        if k['Medal'] != 'NA' :
          if e not in a :
            a[e] = [k['Sport']]
          else :
            a[e].append(k['Sport'])
          sports.add(k['Sport'])
    else :
      a[e] = []
  for e in a.values() :
    x = set(e)
    sports = x&sports
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def list_to_dict(key,value) :
    d= {}
    for i in range(len(key)) :
        d[key[i]] = value[i]
    return d

6532169421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 904, 'const': 984, 'code+const': 1888}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:] :
    year = e[9]
    NOC = e[7]
    if year not in athletes_by_Year_NOC : athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year] : athletes_by_Year_NOC[year][NOC] = []
    athletes_by_Year_NOC[year][NOC].append({})
    for i in range(len(data[0])) :
        athletes_by_Year_NOC[year][NOC][-1][data[0][i]] = e[i]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for e in athletes_by_Year_NOC[year] :
    if e not in medals : medals[e] =(0,0,0)
    for c in athletes_by_Year_NOC[year][e]:
        if c['Medal'] == 'Gold' :
            medals[e] = (medals[e][0]+1,)+medals[e][1:]
        elif c['Medal'] == 'Silver' :
            medals[e] = medals[e][:1]+(medals[e][1]+1,)+medals[e][2:]
        elif c['Medal'] == 'Bronze' :
            medals[e] = medals[e][:2]+(medals[e][2]+1,)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all_team = []
  for e in medals :
    all_team.append((-medals[e][0],-medals[e][1],-medals[e][2],e))
  all_team.sort()
  for e in all_team :
    if len(topfive) < 5 :
      topfive.append((e[3],-e[0],-e[1],-e[2]))
    elif e[:3] == last_medal and len(topfive)>=5 :
      topfive.append((e[3],-e[0],-e[1],-e[2]))
    else : break
    last_medal = e[:3]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(((start+1)//2)*2,end+1,2) :
    if NOC in athletes_by_Year_NOC[str(year)] :
        trend.append((str(year),)+get_medals_by_team(athletes_by_Year_NOC,str(year))[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for e in athletes_by_Year_NOC[year][NOC] :
        if e['Medal'] != 'NA' : sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_sports = []
  for e in NOCs :
    list_sports.append(get_sports(athletes_by_Year_NOC,e,year))
  sports = list_sports[0]
  for e in list_sports :
    sports = sports&e
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532195721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.67KeyError('2010')
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 864, 'const': 1213, 'code+const': 2077}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    column_names = data[0]
    for row in data[1:]:
        new_dict = {}
        for i in range(len(column_names)):
            new_dict[column_names[i]] = row[i]
        year = str(row[9])
        noc = row[7]
        athletes_list = []
        if year in athletes_by_Year_NOC:
            if noc in athletes_by_Year_NOC[year]:
                athletes_list = athletes_by_Year_NOC[year][noc]
        else:
            athletes_by_Year_NOC[year] = {}
        athletes_list.append(new_dict)
        athletes_by_Year_NOC[year][noc] = athletes_list
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    d = athletes_by_Year_NOC[year]
    for noc in d:
        gold, silver, bronze = 0, 0, 0
        for med in d[noc]:
            if med['Medal'] == 'Gold':
                gold += 1
            elif med['Medal'] == 'Silver':
                silver += 1
            elif med['Medal'] == 'Bronze':
                bronze += 1
        medals[noc] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  ranking = []
  x = list(sorted(medals.items(), key=lambda item: item[1], reverse=True))
  n = 0
  prev_val = None
  for e in x:
    if n >= 5 and e[1] != prev_val:
      break
    ranking.append(e)
    prev_val = e[1]
    n+=1
  for i in range(len(ranking)):
    topfive.append((x[i][0],) + x[i][1])
  topfive = sorted(topfive, key=lambda x: (-x[1], -x[2], -x[3], x[0]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if i % 2 == 0:
      x = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in x:
        trend.append(tuple((str(i),) + (x[NOC])))
  return trend
#======================================
def get_sports(athletes_by_year_noc, noc, year):
    sports = set()
    if year in athletes_by_year_noc:
        if noc not in athletes_by_year_noc[year]:
            return set()
        else:
            for medal in athletes_by_year_noc[year][noc]:
                if medal['Medal'] in ['Gold', 'Silver', 'Bronze']:
                    sports.add(medal['Sport'])
    else:
        return set()
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if year not in athletes_by_Year_NOC:
        return set()
    else:
        keys = list(NOCs)
        for s in range(len(keys)):
            i = 0
            for e in keys:
                if i == 0:
                    sports = sports.union(get_sports(athletes_by_Year_NOC, e, year))
                    i += 1
                else:
                    sports = sports.intersection(get_sports(athletes_by_Year_NOC, e, year))
                    i += 1
        return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530407421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.68
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('FA', 3, 2, 1), ('KB', 3, 2, 1), ('JF', 3, 2, 1), ('SJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('BM', 3, 2, 1), ('AN', 3, 2, 1), ('MS', 3, 2, 1), ('NZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 882, 'const': 880, 'code+const': 1762}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    h = data[0]
    y = set([data[i][9] for i in range(1,len(data))])
    n = set([data[i][7] for i in range(1,len(data))])
    for e in y:
        athletes_by_Year_NOC[e] = {}
        for q in n:
            athletes_by_Year_NOC[e][q] = []
    for i in data[1:]:
        yi = i[9]
        ni = i[7]
        k = {}
        for j in range(len(h)):
            k[h[j]] = i[j]
        athletes_by_Year_NOC[yi][ni].append(k)
    for e in y:
        for q in n:
            if athletes_by_Year_NOC[e][q] == []:
                athletes_by_Year_NOC[e].pop(q)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        y = athletes_by_Year_NOC[year]
        for n in y:
            g,s,b = 0,0,0
            for e in y[n]:
                if e['Medal'] == 'Gold':
                     g += 1
                elif e['Medal'] == 'Silver':
                    s += 1
                elif e['Medal'] == 'Bronze':
                     b += 1
            medals[n] = (g,s,b)
    return medals
# #======================================
def get_top_five(medals):
    topfive = []
    c = {}
    for e in medals:
        nm = medals[e]
        if nm not in c:
            c[nm] = []
        c[nm].append(e)
    for e in sorted(c)[::-1]:
        if len(topfive) >= 5: break
        for noc in c[e]:
            topfive.append((noc,)+e)
    return topfive
# #======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
        if str(y) in athletes_by_Year_NOC:
            mnoc = get_medals_by_team(athletes_by_Year_NOC, str(y))
            if NOC in mnoc:
                trend.append((str(y),)+mnoc[NOC])
    return trend
# #======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        k = athletes_by_Year_NOC[year][NOC]
        for i in k:
            if i['Medal'] != 'NA':
                sports.add(i['Sport'])
    return sports
# #======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sl = []
    for n in NOCs:
        sl.append(get_sports(athletes_by_Year_NOC, n, year))
    sports = sl[0]
    for i in range(1,len(sl)):
        sports &= sl[i]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530434321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.68
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('FA', 3, 2, 1), ('KB', 3, 2, 1), ('JF', 3, 2, 1), ('SJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('BM', 3, 2, 1), ('AN', 3, 2, 1), ('MS', 3, 2, 1), ('NZ', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 770, 'const': 856, 'code+const': 1626}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data [1:] :
        year = e[9]
        if year in athletes_by_Year_NOC :
            pass
        else :
            athletes_by_Year_NOC[year] = {}
        noc = e[7]
        if noc in athletes_by_Year_NOC[year] :
            pass
        else :
            athletes_by_Year_NOC[year][noc] = list()
        dict_data = {}
        for i in range (len(data[0])):
            dict_data[data[0][i]]= e[i]
        athletes_by_Year_NOC[year][noc].append(dict_data)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC: 
        a = athletes_by_Year_NOC[year]
        for noc in a :
            y ={}
            Gold = 0
            Silver = 0
            Bronze = 0
            for player in athletes_by_Year_NOC[year][noc] :
                if player['Medal'] == 'Gold':
                    Gold += 1
                elif player['Medal'] == 'Silver':
                    Silver += 1
                elif player['Medal'] == 'Bronze':
                    Bronze += 1
                else : pass
            medals[noc]=(Gold,Silver,Bronze)
    return medals
#======================================
def get_top_five(medals):
    medals_reverse = {}
    topfive = []
    for noc in medals :
        b = medals[noc]
        if b not in medals_reverse :
            medals_reverse[b]= []
        medals_reverse[b].append(noc)
    data_sort_medals = sorted(medals_reverse.items(),reverse=True)
    for e in data_sort_medals:
        for noc in e[1]:
            x=[noc]
            for each_medal in e[0] :
                x.append(each_medal)
            topfive.append(tuple(x))
        if len(topfive) >= 5 :
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range (start, end+1) :
      noc_medal = get_medals_by_team(athletes_by_Year_NOC, str(year))
      if NOC in noc_medal:
          x,y,z = noc_medal[NOC]
          trend.append((str(year),x,y,z))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC :
      return sports
  if NOC not in athletes_by_Year_NOC[year] :
      return sports
  for e in athletes_by_Year_NOC[year][NOC] :
      if e['Medal'] != 'NA' :
          sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a=[]
  for NOC in NOCs :
      a.append(get_sports(athletes_by_Year_NOC,NOC,year))
  for i in range (len(a)):
    sports = a[0].intersection(a[i])    
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530364021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.68
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('FA', 3, 2, 1), ('KB', 3, 2, 1), ('JF', 3, 2, 1), ('SJ', 3, 2, 1), ('ZK', 3, 2, 1),
  ('B', 3, 2, 1), ('A', 3, 2, 1), ('M', 3, 2, 1), ('N', 3, 2, 1), ('XS', 3, 2, 01), ('PZ', 3, 2, 01)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1222, 'const': 1681, 'code+const': 2903}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    currentList = []
    if data[i][9] in athletes_by_Year_NOC:
      if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
        currentList = athletes_by_Year_NOC[data[i][9]][data[i][7]]
    newDict ={}
    for i2 in range(len(data[i])):
      newDict[data[0][i2]] = data[i][i2]
    if(not athletes_by_Year_NOC):
      athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[newDict]}
      continue
    if(currentList):
      currentList.append(newDict)
    else:
      if data[i][9] in athletes_by_Year_NOC:
        athletes_by_Year_NOC[data[i][9]].update({data[i][7]:[newDict]})
      else:
        athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[newDict]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  currentValue = athletes_by_Year_NOC[year]
  medals = {}
  for ele2 in currentValue.values():
    currentDict = {}
    for subEle in ele2:
      if(not subEle["NOC"] in currentDict):
        currentDict[subEle["NOC"]] = [0,0,0]
      if(subEle["Medal"] == "Gold"):
        currentDict[subEle["NOC"]][0] += 1
      elif(subEle["Medal"] == "Silver"):
        currentDict[subEle["NOC"]][1] += 1
      elif(subEle["Medal"] == "Bronze"):
          currentDict[subEle["NOC"]][2] += 1
    medals[subEle["NOC"]] = tuple(currentDict[subEle["NOC"]])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  allValue = []
  def tupleSort(tup):
    return (tup[1],tup[2],tup[3])
  for ele in medals:
    allValue.append((ele,medals[ele][0],medals[ele][1],medals[ele][2]))
  allValue.sort(reverse = True , key = tupleSort)
  i=0
  lastValue = -1
  while True:
    if(i == len(allValue)):
      break
    if(i==4):
      lastValue = allValue[4][1:3]
    if(lastValue !=-1):
      if(lastValue == allValue[i][1:3]):
        topfive.append(allValue[i])
      else:
        break
    else:
      topfive.append(allValue[i])
    i+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if(str(i) in athletes_by_Year_NOC):
      matchS = False
      for ele in athletes_by_Year_NOC[str(i)]:
        if(NOC == ele):
          matchS = True
      if(not matchS):
        continue
    else:
      continue
    currentValue = athletes_by_Year_NOC[str(i)]
    currentList = currentValue[NOC]
    result = [str(i),0,0,0]
    for subEle in currentList:
      if(subEle["Medal"] == "Gold"):
        result[1] += 1
      elif(subEle["Medal"] == "Silver"):
        result[2] += 1
      elif(subEle["Medal"] == "Bronze"):
        result[3] += 1
    trend.append(tuple(result))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if(not year in athletes_by_Year_NOC):
    return sports
  if(not NOC in athletes_by_Year_NOC[year]):
    return sports
  ele2 = athletes_by_Year_NOC[year][NOC]
  medals = {}
  for subEle in ele2:
    if(subEle["Medal"] == "Gold" or subEle["Medal"] == "Silver" or subEle["Medal"] == "Bronze"):
      sports.add(subEle["Sport"])       
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sportList = []
  for ele in NOCs:
    sportList.append(get_sports(athletes_by_Year_NOC,ele,year))
  if(sportList):
    result = sportList[0]
    for i in range(1,len(sportList)):
      result = result.intersection(sportList[i])
  sports = result
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530405121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.93
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1190, 'const': 1052, 'code+const': 2242}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      if not data[i][9] in athletes_by_Year_NOC:
          athletes_by_Year_NOC[data[i][9]]={}
      if not data[i][7] in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]]=[]
      a={}
      for e in range(len(data[0])):
        if e !=7 and e!= 9:
          a[data[0][e]]=data[i][e]
      athletes_by_Year_NOC[data[i][9]][data[i][7]].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
    a=0
    b=0
    c=0
    for j in range(len(athletes_by_Year_NOC[year][i])):
      if  athletes_by_Year_NOC[year][i][j]['Medal'] =='Gold':
        a+=1
      elif athletes_by_Year_NOC[year][i][j]['Medal'] == 'Silver':
        b+=1
      elif athletes_by_Year_NOC[year][i][j]['Medal']=='Bronze':
        c+=1
    medals[i]=(a,b,c)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  b=[]
  c=False
  for j in medals:
    b.append([(-medals[j][0],-medals[j][1],-medals[j][2]),j])
  b=sorted(b)
  for i in range(5):
    topfive.append((b[i][1],medals[b[i][1]][0],medals[b[i][1]][1],medals[b[i][1]][2]))
  for k in range(4,len(b)-1):
    for l in range(2):
      if b[k][0][l]==b[k+1][0][l]:
        pass
      else:
        c=True
        break
    if c == False:
      topfive.append((b[k+1][1],medals[b[k+1][1]][0],medals[b[k+1][1]][1],medals[b[k+1][1]][2]))
    if c :
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      m=get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in m:
        trend.append((str(i),m[NOC][0],m[NOC][1],m[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for j in range(len(athletes_by_Year_NOC[year][NOC])):
      if athletes_by_Year_NOC[year][NOC][j]['Medal']  =='Gold' or athletes_by_Year_NOC[year][NOC][j]['Medal'] =='Silver' or athletes_by_Year_NOC[year][NOC][j]['Medal'] == 'Bronze':
          if athletes_by_Year_NOC[year][NOC][j]['Sport'] not in sports :
            sports.add(athletes_by_Year_NOC[year][NOC][j]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  b=[]
  for i in NOCs :
    a=get_sports(athletes_by_Year_NOC,i, year)
    b.append(a)
  for j in range(len(b)):
    if j==0:
      sports=b[j]
    else:
      sports=sports & b[j]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530430821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.7
[[('AC', 1, 1, 01), ('BE', 1, 1, 01), ('CA', 1, 1, 10), ('DB', 1, 1, 0), ('ED', 1, 1, 10)],
 [('AB', 1, 1, 01), ('BA', 1, 1, 10), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1756, 'const': 916, 'code+const': 2672}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    a={}
    for i in range(1,len(data)):
        a[data[i][9]]=1
    for i in a:
        c={}
        for j in data:
            if j[9]==i:
                c[j[7]]=1
        f={}
        for j in c:
            e=[]
            for m in data:
                dd={}
                if m[7]==j and m[9]==i:
                    for n in range(len(data[0])):
                        dd[data[0][n]]=m[n]
                    e.append(dd)
            f[j]=e
        athletes_by_Year_NOC[i]=f
    return athletes_by_Year_NOC
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
      for j in athletes_by_Year_NOC[year]:
          gold=0
          silver=0
          bronze=0
          for n in athletes_by_Year_NOC[year][j]:
              if n['Medal']=='Gold':
                  gold+=1
              elif n['Medal']=='Silver':
                  silver+=1
              elif n['Medal']=='Bronze':
                  bronze+=1
          medals[j]=(gold, silver, bronze)                
    return medals
def get_top_five(medals):
    topfive = []
    a=[]
    for i in medals:
        a.append([medals[i][0],i])
    a.sort()
    a=a[::-1]
    b=a[:5]
    for i in a[5:]:
        if i[0]==b[-1][0]:
            b.append(i)
    for i in b:
        i[0]*=-1
    b.sort()
    for i in b:
        i[0]*=-1
    if len(b)==5:
        for i in b:
            topfive.append((i[1],medals[i[1]][0],medals[i[1]][1],medals[i[1]][2]))
    else:
        c=[]
        for i in b:
            if i[0]==b[-1][0]:
                c.append(i)
            else:
                topfive.append((i[1],medals[i[1]][0],medals[i[1]][1],medals[i[1]][2]))
        d=[]
        for i in c:
            d.append([medals[i[1]][1],i[1]])
        d.sort()
        d=d[::-1]
        e=d[:5-len(topfive)]
        for i in d[5-len(topfive):]:
            if i[0]==e[-1][0]:
                e.append(i)
        for i in e:
            i[0]*=-1
        e.sort()
        for i in e:
            i[0]*=-1
        if len(e)==5-len(topfive):
            for i in e:
                topfive.append((i[1],medals[i[1]][0],medals[i[1]][1],medals[i[1]][2]))
        else:
            f=[]
            for i in e:
                if i[0]==e[-1][0]:
                    f.append(i)
                else:
                    topfive.append((i[1],medals[i[1]][0],medals[i[1]][1],medals[i[1]][2]))
            g=[]
            for i in f:
                g.append([medals[i[1]][2],i[1]])
            g.sort()
            g=g[::-1]
            h=g[:5-len(topfive)]
            for i in g[5-len(topfive):]:
                if i[0]==h[-1][0]:
                    h.append(i)
            for i in h:
                i[0]*=-1
            h.sort()
            for i in h:
                i[0]*=-1
            for i in h:
                topfive.append((i[1],medals[i[1]][0],medals[i[1]][1],medals[i[1]][2]))
    return topfive
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        a=get_medals_by_team(athletes_by_Year_NOC, str(i))
        if str(i) in athletes_by_Year_NOC:
            if NOC in a:
                trend.append((str(i),a[NOC][0],a[NOC][1],a[NOC][2]))
    return trend
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i['Medal']!='NA':
                    sports.add(i['Sport'])
    return sports
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    b=[]
    for i in NOCs:
        b.append(get_sports(athletes_by_Year_NOC, i, year))
    a=b[0]
    for i in range(1,len(b)):
        a=a.intersection(b[i])
    sports=a
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530400021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.71
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('D', 1, 1, 0), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('JM', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 866, 'const': 1177, 'code+const': 2043}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    headers = data[0]
    for row in data[1:]:
        year = row[headers.index('Year')]
        noc = row[headers.index('NOC')]
        athletes_by_Year_NOC.setdefault(year, {}).setdefault(noc, [])
        new_row = {}
        for i in range(len(headers)):
            new_row[headers[i]] = row[i]
        athletes_by_Year_NOC[year][noc].append(new_row) 
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for team in athletes_by_Year_NOC[year]:
            medals[team] = (0, 0, 0)
            for athlete in athletes_by_Year_NOC[year][team]:
                medal = athlete['Medal']
                if medal == 'Gold':
                    medals[team] = (medals[team][0] + 1, medals[team][1], medals[team][2])
                elif medal == 'Silver':
                    medals[team] = (medals[team][0], medals[team][1] + 1, medals[team][2])
                elif medal == 'Bronze':
                    medals[team] = (medals[team][0], medals[team][1], medals[team][2] + 1)
    return medals
#======================================
def get_top_five(medals):
    top_five = []
    for noc, medal_count in medals.items():
        top_five.append((noc, medal_count[0], medal_count[1], medal_count[2]))
    top_five.sort(key=lambda x: (-x[1], -x[2], -x[3]))
    top_five = top_five[:5]
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end + 1):
        medals_by_team = get_medals_by_team(athletes_by_Year_NOC, str(year))
        if NOC in medals_by_team:
            gold, silver, bronze = medals_by_team[NOC]
            trend.append((str(year), gold, silver, bronze))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    try:
        athletes = athletes_by_Year_NOC[year][NOC]
    except KeyError:
        return sports
    for athlete in athletes:
        if athlete['Medal'] != 'NA':
            sports.add(athlete['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sports_noc = []
    for NOC in NOCs:
        try:
            sports_noc.append(get_sports(athletes_by_Year_NOC, NOC, year))
        except KeyError:
            pass
    if len(sports_noc) == 0:
        return sports
    elif len(sports_noc) == 1:
        return sports_noc[0]
    else:
        for sport in sports_noc[0]:
            common = True
            for sport_set in sports_noc[1:]:
                if sport not in sport_set:
                    common = False
                    break
            if common:
                sports.add(sport)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
# Test 1

6532028621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.75
[[('C', (1, 1, 1)), ('E', (1, 1, 1)), ('A', (1, 1, 0)), ('B', (1, 1, 0)), ('D', (1, 1, 0))],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1108, 'const': 1254, 'code+const': 2362}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    noc_list = {}
    noc_have = {}
    for i in range(1,len(data)) :
        noc_list = {}
        for j in range(len(data[i])) :
           noc_list[data[0][j]] = data[i][j]
        if noc_list['Year'] not in athletes_by_Year_NOC.keys() :
            athletes_by_Year_NOC[noc_list['Year']] = {noc_list['NOC'] : [noc_list]}
            a = set()
            a.add(noc_list['NOC'])
            noc_have[noc_list['Year']] = a
        else :
            if noc_list['NOC'] not in noc_have[noc_list['Year']] :
                athletes_by_Year_NOC[noc_list['Year']][noc_list['NOC']] =  [noc_list]
                noc_have[noc_list['Year']].add(noc_list['NOC'])
            else :
                athletes_by_Year_NOC[noc_list['Year']][noc_list['NOC']].append(noc_list)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC.keys() or len(athletes_by_Year_NOC) == 0 :
        return medals
    ath_in_year = athletes_by_Year_NOC[year]
    for noc in ath_in_year.keys() :
        g,s,b = (0,0,0)
        for athdict in ath_in_year[noc] :
            if athdict['Medal'] == 'Gold' : g += 1
            elif athdict['Medal'] == 'Silver' : s += 1
            elif athdict['Medal'] == 'Bronze' : b += 1
            else : pass
        medals[noc] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    sort_list = []
    def sorting(x) :
        return [x[1][0],x[1][1],x[1][2]]
    def namesort(x) :
        return x[0]
    sort_list = sorted(medals.items(), key=namesort)
    sort_list.sort(key=sorting ,reverse = True)
    if len(sort_list) <= 5 :
        return sort_list
    for i in range(0,5) :
        topfive.append((sort_list[i][0],sort_list[i][1][0],sort_list[i][1][1],sort_list[i][1][2]))
    j = 5
    while sort_list[j-1][1] == sort_list[j][1] :
        topfive.append((sort_list[j][0],sort_list[j][1][0],sort_list[j][1][1],sort_list[j][1][2]))
        j += 1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1) :
        if str(year) in athletes_by_Year_NOC.keys() :    
           medallist = get_medals_by_team(athletes_by_Year_NOC,str(year))
           if NOC in medallist.keys() :
               g,s,b  = medallist[NOC]
               trend.append((str(year),g,s,b))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    medaltype = ['Gold','Silver','Bronze']
    if year in athletes_by_Year_NOC.keys() :
        noc_list = [e for e in athletes_by_Year_NOC[year].keys()]
        if NOC not in noc_list :
            return sports
        else :
            for aths in athletes_by_Year_NOC[year][NOC]:
                if aths['Medal'] in medaltype:
                    sports.add(aths['Sport'])
            return sports
    else :
        return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if len(NOCs) == 0 : return sports
    first = True
    for nation in NOCs:
        s2 = get_sports(athletes_by_Year_NOC,nation,year)
        if first :
            sports = s2
            first = False
        else :
            sports = sports.intersection(s2)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530338821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_010.89
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_020.89
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'),
   ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1164, 'const': 1599, 'code+const': 2763}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:]:
      year = e[9]
      if year not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[year] = {}
  for r in data[1:]:
      year = r[9]
      noc = r[7]
      info = {
          "ID": r[0],
          "Name": r[1],
          "Sex": r[2],
          "Age": r[3],
          "Height": r[4],
          "Weight": r[5],
          "Team": r[6],
          "Games": r[8],
          "Season": r[10],
          "City": r[11],
          "Sport": r[12],
          "Event": r[13],
          "Medal": r[14]
           }
      if noc not in athletes_by_Year_NOC[year]:
          athletes_by_Year_NOC[year][noc] = []
      athletes_by_Year_NOC[year][noc].append(info)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  dat = athletes_by_Year_NOC[year] 
  g = 0
  s = 0
  c = 0
  for i in dat :
      if i not in medals :
          medals[i] = ()
      for e in dat[i] :
          if e['Medal'] != 'NA' :
              if e['Medal'] == 'Gold' :
                  g += 1
              elif e['Medal'] == 'Silver' :
                  s += 1
              elif e['Medal'] == 'Bronze' :
                  c += 1
          else :
              pass
      allmed = (g,s,c)
      medals[i]=allmed
      g = 0
      s = 0
      c = 0
  return medals
#======================================
def get_top_five(medals):
  dat = medals
  newval = []
  val = []
  for e in dat :
      a = [-1*dat[e][0],-1*dat[e][1],-1*dat[e][2],e]
      val.append(a)
  val.sort()
  for a in val :
      b = (-1*a[0],-1*a[1],-1*a[2],a[3])
      newval.append(b)
  ans = []
  for d in newval:
      t = (d[3],)+d[:3]
      ans.append(t)
  ans += 'end'
  topfive = [ans[0]]
  start = ans[0][1:]
  count = 1
  i = 1
  while count<5 :
      if start != ans[i][1:]:
          count += 1
          start = ans[i][1:]
          topfive.append(ans[i])
          i += 1
      else :
          count +=1
          start = ans[i][1:]
          topfive.append(ans[i])
          i += 1
  while True :
      if start != ans[i][1:] :
          break
      else :
          start = ans[i][1:]
          topfive.append(ans[i])
          i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  dat = athletes_by_Year_NOC
  for year in dat :
      if int(year) in range(start,end+1) :  
          if NOC in dat[year] :
              med = get_medals_by_team(dat,year)[NOC]
              mdyear = (str(year),)+med
              trend.append(mdyear)
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  dat = athletes_by_Year_NOC
  if year in dat :
    if NOC in dat[year] :
      for a in dat[year][NOC] :
        if a['Medal'] == 'Gold' or a['Medal'] == 'Silver' or a['Medal'] == 'Bronze' :
          sports.add(a['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  allset = []
  for e in NOCs :
    allset.append(get_sports(athletes_by_Year_NOC,e,year))
  sports = allset[0]
  for each in allset[1:] :
    sports = sports.intersection(each)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530263321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.8
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('C', 1, 1, 1), ('EA', 1, 1, 10), ('CB', 1, 1, 10), ('ED', 1, 1, 10)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 960, 'const': 968, 'code+const': 1928}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  dict1 = {}
  for i in range(1,len(data)):
    if data[i][9] in dict1:
      if data[i][7] not in dict1[data[i][9]]:
         dict1[data[i][9]][data[i][7]] = []
    else: 
      dict1[data[i][9]] = {data[i][7]:[]}
    dict2 = {}
    for j in range(len(data[0])):
      dict2[data[0][j]] = data[i][j]
    dict1[data[i][9]][data[i][7]].append(dict2)
  return dict1
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for e in athletes_by_Year_NOC[year]:
      br = 0
      sil = 0
      go = 0
      for data in athletes_by_Year_NOC[year][e]:
        if data["Medal"] == "Bronze": 
          br = br + 1
        elif data["Medal"] == "Silver":
          sil = sil + 1
        elif data["Medal"] == "Gold":
          go = go + 1
      medals[e] = (go, sil, br)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  list1 = []
  for e in medals:
    m = medals[e]
    find = False
    for i in range(len(list1)):
      if list1[i][0] == m:
        list1[i][1].append(e)
        find = True
    if find == False:
      list1.append([m,[e]])
  list1.sort()
  list2 = []
  for i in range(len(list1)-1, 0, -1):
    list2.append(list1[i])
  c = 5
  while c >= 1 and c <= 5:
    for i in range(len(list2)):
      list2[i][1].sort()
      for NOC in list2[i][1]:
        topfive.append((NOC, list2[i][0][0], list2[i][0][1], list2[i][0][2]))
        c -= 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
    m = get_medals_by_team(athletes_by_Year_NOC, str(i))
    if NOC in m:
      trend.append((str(i), m[NOC][0], m[NOC][1], m[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
        if e["Medal"] == "NA": pass
        else:
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  check = True
  for e in NOCs:
    if check:
      sports = get_sports(athletes_by_Year_NOC, e, year)
      check = False
    sports = sports & get_sports(athletes_by_Year_NOC, e, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530223221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.82
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('W', 0, 0, 1),
  ('X', 0, 0, 1), ('Y', 0, 0, 1)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1264, 'const': 940, 'code+const': 2204}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC.update({str(data[i][9]):{}})
            if data[i][7] not in athletes_by_Year_NOC[str(data[i][9])]:
                athletes_by_Year_NOC[str(data[i][9])].update({str(data[i][7]):[]})
                athletes_by_Year_NOC[str(data[i][9])][data[i][7]].append(get_sub(data,i))
            else:
                athletes_by_Year_NOC[str(data[i][9])][data[i][7]].append(get_sub(data,i))
        else:
            if data[i][7] not in athletes_by_Year_NOC[str(data[i][9])]:
                athletes_by_Year_NOC[str(data[i][9])].update({str(data[i][7]):[]})
                athletes_by_Year_NOC[str(data[i][9])][data[i][7]].append(get_sub(data,i))
            else:
                athletes_by_Year_NOC[str(data[i][9])][data[i][7]].append(get_sub(data,i))
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC:
        return medals
    for e in athletes_by_Year_NOC[year]:
        gold   = 0
        silver = 0
        bronze = 0
        for k in athletes_by_Year_NOC[year][e]:
            if k['Medal'] == 'Gold':
                  gold   += 1 
            if k['Medal'] == 'Silver':
                  silver += 1
            if k['Medal'] == 'Bronze':
                  bronze += 1
        medals.update({e:(gold, silver, bronze)})
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medal = sorted([([-a,-b,-c], k) for k, (a,b,c) in medals.items()])
    for i in range(1,len(medal)):
        if len(topfive) <= 4:
            topfive.append(medal[i-1])
        elif len(topfive) == 5:
            if medal[i-1][0] != medal[i][0]:
                break
            else:
                topfive.append(medal[i-1])
        else:
            if medal[i-1][0] == medal[i][0]:
                topfive.append(medal[i-1])
            else:
                topfive.append(medal[i-1])
                break
    topfive = [(v,-a,-b,-c) for (a,b,c), v in topfive]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range (start, end+1):
        if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]:
            f2 = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
            trend.append((str(i),f2))
    trend = [(v,a,b,c) for v,(a,b,c) in trend]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for e in athletes_by_Year_NOC[year][NOC]:
            if e['Medal'] == 'Gold' or e['Medal'] == 'Silver' or e['Medal'] == 'Bronze':
                sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    k = []
    for i in NOCs:
        k.append(get_sports(athletes_by_Year_NOC, i, year))
    sports = set.intersection(*k)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def get_sub(data,i):
    diic = {}
    x=0
    for e in data[i]:
        diic[data[0][x]] = e
        x+=1
    return diic

6532022821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.84
5
5
5
5
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1008, 'const': 1000, 'code+const': 2008}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  head=data[0]
  l=len(data[0])
  for e in data[1:]: 
    r={}
    year=e[9]
    NOC=e[7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year]={}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC]=[]
    for i in range(l):
      r[head[i]]=e[i]
    athletes_by_Year_NOC[e[9]][e[7]].append(r)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for e in athletes_by_Year_NOC[year]:
     gold=0
     silver=0
     bronze=0
     for q in athletes_by_Year_NOC[year][e]:
       if q['Medal']=='Gold': gold+=1
       elif q['Medal']=='Silver': silver+=1
       elif q['Medal']=='Bronze': bronze+=1
     medals[e]=(gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  t=[]
  t1=[]
  for e in medals:
    t.append(((-1)*medals[e][0],(-1)*medals[e][1],(-1)*medals[e][2],e))
  t.sort()
  s=5
  if len(t)<5: s=len(t)
  t1=t[:s]
  check=999
  i=s
  print(s)
  while check==999 and i<s:
    print(i)
    if t[i][0]==t1[s-1][0] and t[i][1]==t1[s-1][1] and t[i][2]==t1[s-1][2] :
      t1.append(t[i])
      i+=1
    else: check=9
  for e in t1:
    topfive.append((e[3],(-1)*e[0],(-1)*e[1],(-1)*e[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]:
      medals=get_medals_by_team(athletes_by_Year_NOC, str(year))
      x=medals[NOC]
      x=(str(year),x[0],x[1],x[2])
      trend.append(x)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]:
    for e in athletes_by_Year_NOC[str(year)][NOC]:
      if e['Medal'] !='NA':
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s=[]
  if str(year) in athletes_by_Year_NOC:
    for e in NOCs :
      s.append(get_sports(athletes_by_Year_NOC,e,str(year)))
  sports=s[0]
  for i in range(1,len(s)):
      sports=sports & s[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530310121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.85
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1018, 'const': 2234, 'code+const': 3252}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1, len(data)):    
        athlete = to_dict(data[i])
        NOC = athlete['NOC']
        year = athlete['Year']
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {NOC:[athlete]}
        elif NOC not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][NOC] = [athlete]
        else:
            athletes_by_Year_NOC[year][NOC].append(athlete)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
      for NOC in athletes_by_Year_NOC[year]:
          G = 0
          S = 0
          B = 0
          for ID in athletes_by_Year_NOC[year][NOC]:
              if ID['Medal'] == 'Gold':
                  G+=1
              elif ID['Medal'] == 'Silver':
                  S+=1
              elif ID['Medal'] == 'Bronze':
                  B+=1
          medals[NOC] = (G, S, B)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    for NOC, medal in medals.items():
        topfive.append( (medal)+(NOC,) )
    topfive.sort()
    topfive = topfive[::-1]
    ans = []
    L = 0
    c = 0
    for i in range(len(topfive)-1):
        if c >= 5: break
        if topfive[i][:3]!=topfive[i+1][:3]:
            c+=i+1-L
            a = topfive[L:i+1]
            for j in range(len(a)):
                a[j] = (a[j][3],)+a[j][:3]
            a.sort()
            ans+=a
            L = i+1
    topfive = ans
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start, end+1):
        year = str(y)
        if year in athletes_by_Year_NOC:
            medals = get_medals_by_team(athletes_by_Year_NOC, year)
            if NOC in medals:
                medal = medals[NOC]
                trend.append((year, )+medal)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    Medal = {'Gold', 'Silver', 'Bronze'}
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for athlete in athletes_by_Year_NOC[year][NOC]:
                if athlete['Medal'] in Medal:
                    sports.add(athlete['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    for NOC in NOCs:
        sports = sports | get_sports(athletes_by_Year_NOC, NOC, year)
    for NOC in NOCs:
        sports = sports & get_sports(athletes_by_Year_NOC, NOC, year)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def to_dict(athlete):
    d = {}
    d['ID'] = athlete[0]
    d['Name'] = athlete[1]
    d['Sex'] = athlete[2]
    d['Age'] = athlete[3]
    d['Height'] = athlete[4]
    d['Weight'] = athlete[5]
    d['Team'] = athlete[6]
    d['NOC'] = athlete[7]
    d['Games'] = athlete[8]
    d['Year'] = athlete[9]
    d['Season'] = athlete[10]
    d['City'] = athlete[11]
    d['Sport'] = athlete[12]
    d['Event'] = athlete[13]
    d['Medal'] = athlete[14]
    return d

6530336521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.85
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 852, 'const': 1136, 'code+const': 1988}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for info in data[1:]:
    ID, name, sex, age, height, weight, team, NOC, games, year, season, city, sport, event, medal = info
    if year not in athletes_by_Year_NOC.keys():
      athletes_by_Year_NOC[year] = dict()
    if NOC not in athletes_by_Year_NOC[year].keys():
      athletes_by_Year_NOC[year][NOC] = list()
    athletes_by_Year_NOC[year][NOC].append({"ID": ID, "Name": name, "Sex": sex,"Age": age, "Height": height,"Weight": weight, "Team": team, "NOC": NOC, "Games": games,"Year": year, "Season": season, "City": city, "Sport": sport, "Event": event, "Medal": medal})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC.keys():
    for NOC in athletes_by_Year_NOC[year].keys():
      gold, silver, bronze = 0, 0, 0
      for i in range(len(athletes_by_Year_NOC[year][NOC])):
        if athletes_by_Year_NOC[year][NOC][i]["Medal"] == "Gold": gold += 1
        elif athletes_by_Year_NOC[year][NOC][i]["Medal"] == "Silver": silver += 1
        elif athletes_by_Year_NOC[year][NOC][i]["Medal"] == "Bronze": bronze += 1
      medals[NOC] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sames = list()
  same_set = set()
  for medal in sorted(medals.items(), key = lambda x: x[1], reverse = True):
    if medal[1] not in same_set:
      same_set.add(medal[1])
      topfive.extend(sorted(sames))
      sames = list()
    sames.append((medal[0], medal[1][0], medal[1][1], medal[1][2]))
    if len(topfive) >= 5: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end + 1):
    if str(year) in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[str(year)].keys():
        record = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
        trend.append((str(year),record[0], record[1], record[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if str(year) in athletes_by_Year_NOC.keys():
    if NOC in athletes_by_Year_NOC[str(year)].keys():
      for athelete in athletes_by_Year_NOC[year][NOC]:
        if athelete["Medal"] != "NA":
          sports.add(athelete["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_NOCs = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, list_NOCs[0], year)
  for NOC in list_NOCs[1:]:
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, NOC, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530393221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_010.85
[[('2004', 1, 5, 12)],
 [('2000', 4, 5, 8), ('2002', 0, 0, 0), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2004', 0, 0, 0), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 980, 'const': 1425, 'code+const': 2405}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    #0:ID 1:Name 2:Sex 3:Age 4:Height 5:Weight 6:Team 7:NOC
    #8:Games 9:Year 10:Season 11:City 12:Sport 13:Event 14:Medal
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]]={}
        if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]]=[]
        put = {}
        for j in range(15):
            put[data[0][j]]=data[i][j]
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(put)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for i in athletes_by_Year_NOC[year]:
        medals[i]=[0,0,0]
        for di in athletes_by_Year_NOC[year][i]:
            if di['Medal']=="Bronze": medals[i][2]+=1
            elif di['Medal']=="Silver": medals[i][1]+=1
            elif di['Medal']=="Gold": medals[i][0]+=1
        medals[i]=tuple(medals[i])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    til = 4
    for i in medals:
        topfive.append((i,medals[i][0],medals[i][1],medals[i][2]))
    topfive.sort(key=ssort)
    for i in range(4,len(topfive)-1):
        if topfive[i][1:]!=topfive[i+1][1:]: break
        til = i+1
    return topfive[:til+1]
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1):
        year = str(year)
        if year in athletes_by_Year_NOC:
            trend.append([year,0,0,0])
            if NOC in athletes_by_Year_NOC[year]:
                for di in athletes_by_Year_NOC[year][NOC]:
                    if di["Medal"]=="Bronze": trend[-1][3]+=1
                    elif di["Medal"]=="Silver": trend[-1][2]+=1
                    elif di["Medal"]=="Gold": trend[-1][1]+=1
            trend[-1]=tuple(trend[-1])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i["Medal"]!="NA":
                    sports.add(i["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    ls = []
    for i in NOCs:
        ls.append(get_sports(athletes_by_Year_NOC,i,year))
    if ls != []: sports = ls[0]
    for i in ls: sports = sports & i
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def ssort(tu):
    return [-tu[1],-tu[2],-tu[3],tu[0]]
#======================================

6530420521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.85
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1282, 'const': 1023, 'code+const': 2305}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  a = dict()
  for i in range(1,len(data)):
    b=dict()
    for j in range(len(data[i])):
            b[data[0][j]] = data[i][j]
    c = {data[i][7]:[b]}
    if data[i][9] not in a:
      a[data[i][9]] = dict()
      a[data[i][9]].update(c)
    elif data[i][9] in a:
      if data[i][7] not in a[data[i][9]]:
        a[data[i][9]].update(c) 
      else :
        a[data[i][9]][data[i][7]].append(b)
  return a
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  a = dict()
  for e in athletes_by_Year_NOC[year] :
    gold = 0
    silver = 0
    bronze = 0
    for i in range(len(athletes_by_Year_NOC[year][e])):
      if athletes_by_Year_NOC[year][e][i]["Medal"] == "Gold":
        gold +=1
      elif athletes_by_Year_NOC[year][e][i]["Medal"] == "Silver":
        silver +=1
      elif athletes_by_Year_NOC[year][e][i]["Medal"] == "Bronze":
        bronze +=1
      elif athletes_by_Year_NOC[year][e][i]["Medal"] == "NA":
        pass
      a[e] = (gold,silver,bronze)     
  return a
#======================================
def get_top_five(medals):
  b = []
  f = []
  for e in medals:
    c =list(medals[e])
    c.append(e)
    b+=[c]
  b.sort()
  d = b[::-1]
  c = []
  e = []
  for i in range(len(d)-1):
    if d[i][:3:] != d[i+1][:3:]:
      if d[i][:3:] != d[i-1][:3:]:
        c+=[d[i]]
      else:
        e+=[d[i]]
        e.sort()
        c+=e
        e = []
    else :
        e+=[d[i]]
  if len(c)>5 and c[4][:3:] == c[5][:3:]:
    g = c[:4:]
    for i in range(4,len(c)):
      if c[4][:3:] == c[i][:3:]:
        g+= [c[i]]
    for e in g:
      f+=[(e[3],e[0],e[1],e[2])]
    return f
  else:
    for e in c:
      f+=[(e[3],e[0],e[1],e[2])]
    return f[:5:]
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  alls = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC :
      if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)):
        a = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
        alls += [(str(i),a[0],a[1],a[2])]
    else:
      pass
  return alls
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  a = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
        if e["Medal"] != "NA":
          a.add(e["Sport"])
  return a
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  a = set()
  c = []
  d = set()
  for e in NOCs:
    b = get_sports(athletes_by_Year_NOC, e, year)
    c+= [b]
  e = set()
  f = e.union(c[0])
  for i in range(1,len(c)):
    f = f&(c[i])
  return f
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530304421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.89
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('X', 0, 0, 1),
  ('Y', 0, 0, 1), ('Z', 0, 0, 1)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1034, 'const': 913, 'code+const': 1947}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    filedata = []
    ids = {}
    for i in range(len(data)):
        if i == 0:
            for e in data[i]:
                filedata += [e]
        else:
            for e in range(len(data[i])):
                ids[filedata[e]] = data[i][e]
            if ids['Year'] not in athletes_by_Year_NOC:
                athletes_by_Year_NOC[ids['Year']] = {ids['NOC']: [ids]}
            else:
                if ids['NOC'] not in athletes_by_Year_NOC[ids['Year']]:
                    athletes_by_Year_NOC[ids['Year']][ids["NOC"]] = [ids]
                else:
                    athletes_by_Year_NOC[ids['Year']][ids["NOC"]].append(ids)
        ids = {}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC :
    return {}
  data = athletes_by_Year_NOC
  daata = data[year]
  for i in daata :
    gd = 0
    sv = 0
    br = 0 
    for gg in daata[i] :
      if gg['Medal'] == 'Gold' :
        gd = gd + 1
      if gg['Medal'] == 'Silver' :
        sv = sv + 1
      if gg['Medal'] == 'Bronze' :
        br = br + 1
    medals[i] = (gd,sv,br)
  return medals     
#======================================
def get_top_five(medals):
  topfive = []
  p1 = []
  for x,y in medals.items() :
    x,y = y,x
    p1.append(((-int(x[0]),-int(x[1]),-int(x[2])),y))
  p1.sort()
  p3 = []
  for i in p1:
    p3.append((i[1],-int(i[0][0]),-int(i[0][1]),-int(i[0][2])))
  #[('-10', '0', '0', 'USA'), ('-2', '0', '0', 'GER'), ('0', '-1', '-2', 'EGY'), ('0', '-1', '-2', 'ITA'), ('0', '-1', '-2', 'NCA'), ('0', '-5', '0', 'ESP'), ('0', '-5', '0', 'FRA'), ('0', '0', '0', 'QAT')]
  for j in range(len(p3)) :
    if j <= 4 :
      topfive.append(p3[j])
    else :
      if p3[j][1] == p3[j-1][1] and p3[j][2] == p3[j-1][2] and p3[j][3] == p3[j-1][3] :
        topfive.append(p3[j])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  xj = []
  gg = athletes_by_Year_NOC
  for i in gg.keys():
    if start <= int(i) <= end :
      xj.append(str(i))
  for i in xj :
    if NOC in athletes_by_Year_NOC[i] :
      hi = get_medals_by_team(athletes_by_Year_NOC,i)[NOC]
      trend.append((i,hi[0],hi[1],hi[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for k in athletes_by_Year_NOC[year][NOC]:
        if k['Medal'] != 'NA' :
          sports.add(k['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports,no = set(),1
  for kg in NOCs :
    if no == 1 :
      x = get_sports(athletes_by_Year_NOC,kg,year)
      y = x 
      no += 1
    else :
      x = get_sports(athletes_by_Year_NOC,kg,year)
    y &= x 
    sports = y
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530282221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.89
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('W', 0, 0, 1),
  ('X', 0, 0, 1), ('Y', 0, 0, 1), ('Z', 0, 0, 1)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1094, 'const': 1079, 'code+const': 2173}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for ele in data[1:]:
        if ele[9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[ele[9]] = {}
            athletes_by_Year_NOC[ele[9]][ele[7]] = []
            a = dict(zip(data[0],ele))
            athletes_by_Year_NOC[ele[9]][ele[7]].append(a)
        else:
            if ele[7] not in athletes_by_Year_NOC[ele[9]]:
                athletes_by_Year_NOC[ele[9]][ele[7]] = []
                b = dict(zip(data[0],ele))
                athletes_by_Year_NOC[ele[9]][ele[7]].append(b)
            else:
                c = dict(zip(data[0],ele))
                athletes_by_Year_NOC[ele[9]][ele[7]].append(c)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for key in athletes_by_Year_NOC[year]:
            gold = 0
            silver = 0
            bronze = 0
            for ele in athletes_by_Year_NOC[year][key]:
                if ele['Medal'] == "Gold":
                    gold += 1
                elif ele['Medal'] == "Silver":
                    silver += 1
                elif ele['Medal'] == "Bronze":
                    bronze += 1
            medals[key] = (gold,silver,bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    new = []
    latest = []
    for key,value in medals.items():
        new.append([make_negative(value),key])
    lis = sorted(new)
    for ele in lis[:5]:
        latest.append(ele)
    for i in range(5,len(lis)):
        if sum_tuple(lis[i-1][0]) == sum_tuple(lis[i][0]):
            latest.append(lis[i])
        else:
            break
    for prize,name in latest:
        prize = make_negative(prize)
        topfive.append((name,prize[0],prize[1],prize[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if str(start) not in athletes_by_Year_NOC:
        start += 1
    for i in range(start,end+1,2):
        if str(i) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(i)]:
                result = (str(i),) + get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
                trend.append(result)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for ele in athletes_by_Year_NOC[year][NOC]:
                if ele['Medal'] != "NA":
                    sports.add(ele["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    new = []
    old = set()
    if year in athletes_by_Year_NOC:
        for ele in NOCs:
            old = set()
            if ele in athletes_by_Year_NOC[year]:
                for e in athletes_by_Year_NOC[year][ele]:
                    if e['Medal'] != "NA":
                        old.add(e['Sport'])
                new.append(old)
            else:
                return set()
        result = new[0]
        for i in range(1,len(new)):
            latest = result.intersection(new[i])
            result = latest
        return result
    else:
        return set()
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def sum_tuple(x):
    suma = 0
    for e in x:
        suma += e
    return suma
def make_negative(x):
    old = []
    for ele in x:
        ele = -ele
        old.append(ele)
    return tuple(old)

6532029221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.89
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0), ('W', 0, 0, 1),
  ('X', 0, 0, 1), ('Y', 0, 0, 1), ('Z', 0, 0, 1)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 900, 'const': 1228, 'code+const': 2128}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for d in data[1:]:   
    a = {}
    for i,j in zip(d,data[0]):
      a[j] = i
    if d[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[d[9]] = dict()
    if d[7] not in athletes_by_Year_NOC[d[9]]:
      athletes_by_Year_NOC[d[9]][d[7]] = list()
    athletes_by_Year_NOC[d[9]][d[7]].append(a) 
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for nation in athletes_by_Year_NOC[year].items():
      medals[nation[0]] = 0
      medal = [0, 0, 0]
      for d in nation[1]:
        x = d['Medal']
        if x != "NA":
          i = 0 if x == "Gold" else 1 if x == "Silver" else 2  
          medal[i] += 1  
      medals[nation[0]] = tuple(medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all = [(noc, m[0], m[1], m[2]) for noc, m in medals.items()]
  topfive = sorted(all)
  topfive.sort(key = lambda a : a[3], reverse = True)
  topfive.sort(key = lambda a : a[2], reverse = True)
  topfive.sort(key = lambda a : a[1], reverse = True)
  topfive = topfive[:4] + [(noc, g, s, b) for noc, g, s, b in topfive[4:] if g+s+b == topfive[4][1] + topfive[4][2] + topfive[4][3]]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    if str(year) in athletes_by_Year_NOC:
      m = get_medals_by_team(athletes_by_Year_NOC, str(year))
      if NOC in m:
        g, s, b = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
        trend.append((str(year), g, s, b))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for data in athletes_by_Year_NOC[year][NOC]:
        if data["Medal"] != 'NA':
          sports.add(data["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s = []
  if year in athletes_by_Year_NOC:
    sports = (get_sports(athletes_by_Year_NOC, list(NOCs)[-1], year))
    for noc in list(NOCs)[:-1]:
      s.append(get_sports(athletes_by_Year_NOC, noc, year))
  return sports.intersection(*s)
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532021121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.9
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1190, 'const': 1012, 'code+const': 2202}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  title = data[0]
  for i in range(1,len(data)):
    if athletes_by_Year_NOC.get(data[i][-6]) == None:
      athletes_by_Year_NOC[data[i][-6]] = {}
      data_lis = []
    elif athletes_by_Year_NOC.get(data[i][-6]).get(data[i][-8]) == None:
      data_lis = []
    else:
      data_lis = athletes_by_Year_NOC[data[i][-6]][data[i][-8]]
    per_dic = {}
    for j in range(15):
      per_dic[title[j]] = data[i][j]
    data_lis.append(per_dic)
    athletes_by_Year_NOC[data[i][-6]][data[i][-8]] = data_lis
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for nocs in athletes_by_Year_NOC[year]:
    medel = [0,0,0]
    for noc in athletes_by_Year_NOC[year][nocs]:
      noc_name = nocs
      if noc['Medal'] == 'Gold':
        medel[0] += 1
      elif noc['Medal'] == 'Silver':
        medel[1] += 1
      elif noc['Medal'] == 'Bronze':
        medel[2] += 1
    medals[noc_name] = tuple(medel)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  lis_medals = []
  for noc_names in medals:
    lis_medals.append([-medals[noc_names][0],-medals[noc_names][1],-medals[noc_names][2],noc_names])
  lis_medals.sort()
  count = 0
  for i in range(1,len(lis_medals)):
    if lis_medals[i-1][0] == lis_medals[i][0] and lis_medals[i-1][1] == lis_medals[i][1] and lis_medals[i-1][2] == lis_medals[i][2]:
      count -= 1
    else:
      count += 1
    medal = [lis_medals[i-1][3],-lis_medals[i-1][0],-lis_medals[i-1][1],-lis_medals[i-1][2]]
    topfive.append(tuple(medal))
    if count == 5:
      break
  if lis_medals[-1][0] == topfive[-1][1] and lis_medals[-1][1] == topfive[-1][2] and lis_medals[-1][2] == topfive[-1][3]:
    medal = [lis_medals[i-1][3],-lis_medals[i-1][0],-lis_medals[i-1][1],-lis_medals[i-1][2]]
    topfive.append(tuple(medal))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if end % 2 == 0:
    round = end - start + 1
  else:
    round = end - start
  for i in range(round):
    if athletes_by_Year_NOC.get(str(start+i)) != None:
      medals = get_medals_by_team(athletes_by_Year_NOC, str(start+i))
      if medals.get(NOC) != None:
        medal = medals[NOC]
        trend.append(tuple([str(start+i),medal[0],medal[1],medal[2]]))
      else:
        continue
    else:
      continue
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if athletes_by_Year_NOC.get(year) != None:
    if athletes_by_Year_NOC.get(year).get(NOC) != None:
      for person in athletes_by_Year_NOC[year][NOC]:
        if person['Medal'] != 'NA':
          sports.add(person['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  lis_sport = []
  for noc in NOCs:
      lis_sport.append(get_sports(athletes_by_Year_NOC, noc, year))
  sports = set.intersection(*lis_sport)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532164221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.92
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 944, 'const': 1201, 'code+const': 2145}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    athlete_list = []
    property_names = data[0]
    for e in data[1::]:
        cur_athlete = {}
        for i in range(len(e)):
            cur_athlete[property_names[i]] = e[i]
        athlete_list.append(cur_athlete)
    def group_by(property, list):
        result = {}
        for e in list:
            key = e[property]
            if key not in result:
                result[key] = [e]
            else:
                result[key].append(e)
        return result
    athletes_by_Year = group_by('Year', athlete_list)
    for key, value in athletes_by_Year.items():
        athletes_by_Year_NOC[key] = group_by('NOC', value)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    def count_medals(list):
        gold = 0
        silver = 0
        bronze = 0
        for e in list:
            medal = e["Medal"].lower()
            if medal == 'gold':
                gold += 1
            elif medal == 'silver':
                silver += 1
            elif medal == 'bronze':
                bronze += 1
        return (gold, silver, bronze)
    if year in athletes_by_Year_NOC:
      medals = {}
      for key, val in athletes_by_Year_NOC[year].items():
          medals[key] = count_medals(val)
      return medals
    else:
      return {}
#======================================
def get_top_five(medals):
    topfive = []
    if medals != {}:
      sorted_medals = sorted(medals.items(), key=lambda item: item[1], reverse=True)
      count = 1
      cur_medal = sorted_medals[0][1]
      topfive.append(sorted_medals[0])
      i = 1
      while count < 5 and i < len(sorted_medals):
        if sorted_medals[i][1] == (0, 0, 0):
          break
        if sorted_medals[i][1] != cur_medal:
          count += 1
          cur_medal = sorted_medals[i][1]
        topfive.append(sorted_medals[i])
        i += 1  
      topfive = [(noc, gold, silver, bronze) for (noc, (gold, silver, bronze)) in topfive]
      topfive = sorted(topfive, key=lambda e: (-e[1], -e[2], -e[3], e[0]))
      return topfive
    else: return []
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        str_year = str(year)
        if str_year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str_year]:
            (gold, silver, bronze) = get_medals_by_team(athletes_by_Year_NOC, str_year)[NOC]
            trend.append((str(year), gold, silver, bronze))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        athletes = athletes_by_Year_NOC[year][NOC]
        #Sports = [e['Sport'] for e in athletes if e['Medal'] != 'NA']
        for e in athletes:
            if e['Medal'] != 'NA':
                sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    #print(set.intersection(*[get_sports(athletes_by_Year_NOC, noc, year) for noc in NOCs]))
    sports_list = []
    for NOC in NOCs:
        sport = get_sports(athletes_by_Year_NOC, NOC, year)
        sports_list.append(sport)
    sports = set.intersection(*sports_list)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530259921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.93
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1098, 'const': 1233, 'code+const': 2331}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    d = {}
    for i in range(1, len(data)):
        y = data[i][9]
        NOC = data[i][7]
        if y not in d:
            d[y] = {}
        if NOC not in d[y]:
            d[y][NOC] = []
        d[y][NOC].append(datatodict(data[i],data))
    return d
def datatodict(line,data):
    d = {}
    n = len(line)  
    for i in range(n):
        d[data[0][i]] = line[i]
    return d
#======================================
def get_medals_by_team(athletes_by_Year_NOC,year):
    a = athletes_by_Year_NOC
    d = {}
    if year in a:
        for i in a[year]:
            g = 0
            s = 0
            c = 0
            l = a[year][i]
            for j in l:
                if j["Medal"] == "Gold":
                    g += 1
                elif j["Medal"] == "Silver":
                    s += 1
                elif j["Medal"] == "Bronze":
                    c += 1
            d[i] = (g,s,c)
    return d
#======================================
def get_top_five(medals):
    k = []
    for i in medals:
        t = (-medals[i][0],-medals[i][1],-medals[i][2],i)
        k.append(t)
    k.sort()
    s = []
    for i in k:
        s.append((i[3],-i[0],-i[1],-i[2]))
    n = []
    for i in s[:5]:
        n.append(i)
    for i in s[5:]:
        if i[1:3] == n[4][1:3]:
            n.append(i)
    return n
#======================================
def get_medals_trend(athletes_by_Year_NOC,NOC,start,end):
    a = athletes_by_Year_NOC
    t = []
    d = {}
    for i in range(start,end+1):
        if str(i) in a and NOC in a[str(i)]:
            k = [str(i),0,0,0]
            for n in a[str(i)][NOC]:
                if n["Medal"] == "Gold":
                    k[1] += 1
                elif n["Medal"] == "Silver":
                    k[2] += 1
                elif n["Medal"] == "Bronze":
                    k[3] += 1
            t.append(tuple(k))
    return t
#======================================
def get_sports(athletes_by_Year_NOC,NOC,year):
    sports = set()
    a = athletes_by_Year_NOC
    if year in a:
        if NOC in a[year]:
            for i in a[year][NOC]:
                if i["Medal"] != "NA":
                    sports.add(i["Sport"])     
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC,NOCs,year):
    x = set()
    a = athletes_by_Year_NOC
    k = []
    if year in a:
        for n in NOCs:
            if n in a[year]:
                for i in NOCs:
                    s = get_sports(athletes_by_Year_NOC,i,year)
                    k.append(s)
    if len(k) > 1:
        if k[0] != set() and k[1] != set():
            x = k[0]&k[1]
            if len(k) > 2:
                for i in range(1,len(k)-1):
                    x = x&k[i+1]
    elif len(k) == 1:
        x = k[0]    
    return x 
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532173921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.93
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1100, 'const': 1197, 'code+const': 2297}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      data_res={}
      for j in range(len(data[i])):
          data_res[data[0][j]]=data[i][j]
      if data[i][9] in athletes_by_Year_NOC:
          if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
              athletes_by_Year_NOC[data[i][9]][data[i][7]].append(data_res)
          else:
              athletes_by_Year_NOC[data[i][9]][data[i][7]]=[data_res]
      else:
        athletes_by_Year_NOC[data[i][9]]={data[i][7]:[data_res]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
      lstm=[0,0,0]
      for j in athletes_by_Year_NOC[year][i]:
          if j["Medal"]=="Gold":
              lstm[0]=lstm[0]+1
          elif j["Medal"]=="Silver":
              lstm[1]=lstm[1]+1
          elif j["Medal"]=="Bronze":
              lstm[2]=lstm[2]+1
      x=(lstm[0],lstm[1],lstm[2],)
      medals[i]=x
  return medals
#======================================
def get_top_five(medals):
    k=[]
    for i in medals:
        t=(-medals[i][0],-medals[i][1],-medals[i][2],i)
        k.append(t)
    k.sort()
    s=[]
    for i in k:
        s.append((i[3],-i[0],-i[1],-i[2]))
    n=[]
    for i in range(min(5,len(s))):
        n.append(s[i])
    if len(s)>5:
        i=5
        while i<len(s) and s[i][1:3]==n[-1][1:3]:
            n.append(s[i])
            i=i+1
    return n
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend=[]
  for year in range(start,end+1):
    year_str=str(year)
    if year_str in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year_str]:
        gold=0
        silver=0
        bronze=0
        for i in athletes_by_Year_NOC[year_str][NOC]:
            if i["Medal"]=="Gold":
                gold=gold+1
            elif i["Medal"]=="Silver":
                silver=silver+1
            elif i["Medal"]=="Bronze":
                bronze=bronze+1
        trend.append((year_str,gold,silver,bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  i=year
  j=NOC
  if i in athletes_by_Year_NOC:
      if j in athletes_by_Year_NOC[i]:
          for k in athletes_by_Year_NOC[i][j]:
              if k["Medal"]!='NA':
                  sports.add(k["Sport"])
              else:
                  pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  x=[]
  if year in athletes_by_Year_NOC:
      for i in NOCs:
          if i in athletes_by_Year_NOC[year]:
              y=get_sports(athletes_by_Year_NOC,i, year)
              x.append(y)
  sports=x[0]
  for i in range(len(x)):
      sports=sports&x[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530337121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.95
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1218, 'const': 1124, 'code+const': 2342}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    L = len(data)
    for i in range(1,L):
      Noc = data[i][7]
      year = data[i][9]
      sd={}
      for e in range(len(data[i])):
        sd[(data[0])[e]] = (data[i])[e]
      if year not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[year] = {Noc:[sd]}
      elif Noc not in athletes_by_Year_NOC[year]:
          (athletes_by_Year_NOC[year])[Noc] = [sd]
      else:
          (athletes_by_Year_NOC[year])[Noc].append(sd)
      sd={}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    years = athletes_by_Year_NOC[year]
    for name_country in years:
      medals[name_country] = [0,0,0]
    for e in medals:
        x = years[e]
        for i in range(len(x)):
            if (x[i])['Medal'] == 'Bronze':
                medals[e][2] += 1
            if (x[i])['Medal'] == 'Silver':
                medals[e][1] += 1
            if (x[i])['Medal'] == 'Gold':
                medals[e][0] += 1
    for name in medals:
      medals[name] = tuple(medals[name])
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  number_all = []
  for e in medals:
     v1,v2,v3 = list(medals[e])
     number_all.append([-v1,-v2,-v3,e])
  number_all = sorted(number_all)
  for i in range(0,4):
    a = number_all[i][3]
    b = (-1)*(number_all[i][0])
    c = (-1)*(number_all[i][1])
    d = (-1)*(number_all[i][2])
    topfive.append((a,b,c,d))
  for x in range(4,len(number_all)-1):
    if number_all[x][0:3]==number_all[x+1][0:3]:
      f = number_all[x][3]
      g = (-1)*(number_all[x][0])
      h = (-1)*(number_all[x][1])
      j = (-1)*(number_all[x][2])
      topfive.append((f,g,h,j))
    else:
      f = number_all[x][3]
      g = (-1)*(number_all[x][0])
      h = (-1)*(number_all[x][1])
      j = (-1)*(number_all[x][2])
      topfive.append((f,g,h,j))
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range (start,end+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        a = [str(i)]+list(get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC])
        trend += [tuple(a)]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
        for e in athletes_by_Year_NOC[year][NOC]:
          if e['Medal']=='Gold':
            sports.add(e['Sport'])
          elif e['Medal']=='Silver':
            sports.add(e['Sport'])
          elif e['Medal']=='Bronze':
            sports.add(e['Sport'])
          else:
            pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = []
  for e in NOCs:
    a += [get_sports(athletes_by_Year_NOC, e, year)]
  if 0<len(a)<2:
    sports = a[0]
  else:
    sports = a[0].intersection(a[1])
    if len(a)>2:
      for i in range (2,len(a)):
        sports = sports.intersection(a[1])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530344521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.95
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1124, 'const': 1068, 'code+const': 2192}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      check = {}
      for e in range(len(data[i])): 
        check[(data[0])[e]] = (data[i])[e]
      if data[i][9] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[check]}
      elif data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
        (athletes_by_Year_NOC[data[i][9]])[data[i][7]] = [check]
      else:
        ((athletes_by_Year_NOC[data[i][9]])[data[i][7]]).append(check)
      check = {}       
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  eba_year = athletes_by_Year_NOC[year]  
  for country in eba_year: 
    medals[country] = [0,0,0]
  for element in medals:
    for i in range(len(eba_year[element])):
      if eba_year[element][i]['Medal'] == 'Gold':
        medals[element][0] += 1
      elif eba_year[element][i]['Medal'] == 'Silver':
        medals[element][1] += 1
      elif (eba_year[element][i])['Medal'] == 'Bronze':
        medals[element][2] += 1
    medals[element] = tuple(medals[element])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  dataset = []
  for key in medals:
    dataset.append([-medals[key][0],-medals[key][1],-medals[key][2],key])
  dataset.sort()
  for count in range(len(dataset)-1) :
    topfive.append((dataset[count][3],-dataset[count][0],-dataset[count][1],-dataset[count][2]))
    if count > 3:
      if dataset[count][:3] != dataset[count+1][:3]:
        break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for time in range(start,end+1):
     if str(time) in athletes_by_Year_NOC:
       if NOC in athletes_by_Year_NOC[str(time)]:
         trend.append(tuple([str(time)]+list(get_medals_by_team(athletes_by_Year_NOC, str(time))[NOC])))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in range(len(athletes_by_Year_NOC[year][NOC])):
        if athletes_by_Year_NOC[year][NOC][i]['Medal'] == 'Gold' or athletes_by_Year_NOC[year][NOC][i]['Medal'] == 'Silver' or athletes_by_Year_NOC[year][NOC][i]['Medal'] == 'Bronze' :
          sports.add(athletes_by_Year_NOC[year][NOC][i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  check = []
  for country in NOCs:
    check.append(get_sports(athletes_by_Year_NOC, country, year))
  if len(check) == 1:
    sports = check[0]
  elif len(check) == 2:
    temp = check[0].intersection(check[1])
    sports = temp
  elif len(check) > 2:
    temp = check[0].intersection(check[1])
    for i in range(2,len(check)):
      temp = temp.intersection(check[i])
    sports = temp
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532146021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.95
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1320, 'const': 1560, 'code+const': 2880}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    key = data[0]
    athletes_by_Year_NOC = {}
    for e in data[1:]:
        year = e[9]
        noc = e[7]
        minidict = {}
        for i in range(15):
            minidict[key[i]] = e[i]
        if year in athletes_by_Year_NOC:
            if noc in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][noc].append(minidict)
            else:
                athletes_by_Year_NOC[year][noc] = [minidict]
        else:
            athletes_by_Year_NOC[year] = {noc:[minidict]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for noc in athletes_by_Year_NOC[year]:
        count_medal = [0,0,0]
        for athlete in athletes_by_Year_NOC[year][noc]:
            if athlete['Medal'] == 'Gold': count_medal[0] += 1
            elif athlete['Medal'] == 'Silver': count_medal[1] += 1
            elif athlete['Medal'] == 'Bronze': count_medal[2] += 1
        medals[noc] = tuple(count_medal)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    topfive = [[-1,-1,-1,''],[-2,-2,-2,''],[-3,-3,-3,''],[-4,-4,-4,''],[-5,-5,-5,'']]
    for noc in medals:
        skip = False
        run = True
        i = 0
        for i in range(len(topfive)):       
            for j in range(3):
                if medals[noc][j] >= topfive[i][j]:
                    if medals[noc][j] > topfive[i][j]:
                        topfive.insert(i,list(medals[noc])+[noc])
                        i = 1
                        while topfive[-i][:3] == topfive[-i-1][:3]:
                            i += 1
                            topfive = topfive[:-i]
                        topfive = topfive[:-1]
                        topfive = sorted(topfive)[::-1]
                        run = False
                        break
                else: break
            if not run: break
            if medals[noc][:3] == tuple(topfive[i][:3]):
                topfive.insert(i,list(medals[noc])+[noc])
                topfive = sorted(topfive)[::-1]
                run = False
    sort_top = [[-e[0],-e[1],-e[2],e[3]] for e in topfive]
    topfive = sorted(sort_top)
    topfive = [(e[3],-e[0],-e[1],-e[2]) for e in topfive]
    for n in range(len(topfive)):
        if n < 5 and topfive[n][1] >= 0 :
            pass
        elif topfive[n][1:] == topfive[n-1][1:]:
            pass
        else: 
            n -= 1
            break
    topfive = topfive[:n+1]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1):
        if str(year) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(year)]:
                trend.append(((str(year), )+get_medals_by_team(athletes_by_Year_NOC,str(year))[NOC]), )
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    for e in NOCs:
        if not(year in athletes_by_Year_NOC and e in athletes_by_Year_NOC[year]):
            return set()
    for e in NOCs:
        if year in athletes_by_Year_NOC and e in athletes_by_Year_NOC[year]:
            each = get_sports(athletes_by_Year_NOC,e,year)
            sports = sports|each
    for e in NOCs:
        if year in athletes_by_Year_NOC and e in athletes_by_Year_NOC[year]:
            each = get_sports(athletes_by_Year_NOC,e,year)
            sports = sports&each
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530298321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1594, 'const': 1079, 'code+const': 2673}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    re = {}
    for i in range(1,len(data)):
        if data[i][9] not in re:
            re[data[i][9]] = {}
            re[data[i][9]][data[i][7]] = []
            d = {}
            for j in range(len(data[0])):
                d[data[0][j]] = data[i][j]
            re[data[i][9]][data[i][7]].append(d)
        else:
            if data[i][7] in re[data[i][9]]:
                d = {}
                for j in range(len(data[0])):
                    d[data[0][j]] = data[i][j]
                re[data[i][9]][data[i][7]].append(d)
            else:
                re[data[i][9]][data[i][7]] = []
                d = {}
                for j in range(len(data[0])):
                    d[data[0][j]] = data[i][j]
                re[data[i][9]][data[i][7]].append(d)                
    return re
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    dic = athletes_by_Year_NOC
    final = {}
    if 2000 <= int(year) <= 2016:
        if year in dic:
            for c in dic[year].keys():
                g = 0
                s = 0
                b = 0
                for i in range(len(dic[year][c])):
                    if dic[year][c][i]['Medal'] == 'Gold':
                        g += 1
                    if dic[year][c][i]['Medal'] == 'Silver':
                        s += 1
                    if dic[year][c][i]['Medal'] == 'Bronze':
                        b += 1
                final[c] = (g,s,b)
    return final 
#======================================
def get_top_five(medals):
    re = medals
    r = {}
    for noc,point in re.items():
        if point not in r:
            r[point] = []
        r[point].append(noc)
    new = {}
    for c,e in r.items():
        new[c] = sorted(e)
    sor = sorted(r.keys())[::-1]
    fi = []
    k = 0
    for c in sor[:5]:
        if len(new[c]) > 1:
            for e in new[c]:
                a = (e,) + c
                k += 1
                fi.append(a)
                s = new[c].index(e)
                if k == 5:break
        else:
            if k != 5:
                for e in new[c]:
                    a = (e,) + c
                    k += 1
                    fi.append(a)
        if k == 5:
            if len(new[c]) > 1:
                for e in new[c][s+1:]:
                    a = (e,) + c
                    fi.append(a)      
    return fi      
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    d = athletes_by_Year_NOC
    s = start
    e = end
    fi = []
    if str(s) not in d:
        s += 1
    if str(e) not in d:
        e -= 1
    for i in range(s,e+1,2):
        num = get_medals_by_team(d,str(i))
        for k,v in num.items():
            if k == NOC:
                re = (str(i),) + v
                fi.append(re)
    return fi
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    d = athletes_by_Year_NOC
    s = set()
    if year in d:
            if NOC in d[year]:
                for c in d[year][NOC]:
                    if c['Medal'] != 'NA':
                        s.add(c['Sport'])
    return s 
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    d = athletes_by_Year_NOC
    s = set()
    x = []
    if year in d:
            nocs = list(NOCs)
            for c in nocs:
                if c not in d[year]:
                    return s
            if nocs[0] in d[year]:
                for i in range(len(d[year][nocs[0]])):
                    if d[year][nocs[0]][i]['Medal'] != 'NA':
                        x.append(d[year][nocs[0]][i]['Sport'])
            x = set(x)
            for i in range(1,len(nocs)):
                y = []
                if nocs[i] in d[year]:
                    for j in range(len(d[year][nocs[i]])):
                        if d[year][nocs[i]][j]['Medal'] != 'NA':
                            y.append(d[year][nocs[i]][j]['Sport'])
                    y = set(y)
                    inter = x.intersection(y)
                    x = inter
            for c in x:
                s.add(c)
            return s
    return s
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530357721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 810, 'const': 1049, 'code+const': 1859}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  cate = data[0]
  for i in range(1, len(data)):
    id = {}
    for e in range(len(data[i])):
        id[cate[e]] = data[i][e]
    if id['Year'] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[id['Year']] = {id['NOC']: [id]}
    else:
      if id['NOC'] not in athletes_by_Year_NOC[id['Year']]:
        athletes_by_Year_NOC[id['Year']][id["NOC"]] = [id]
      else:
        athletes_by_Year_NOC[id['Year']][id["NOC"]].append(id)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {}
  x = athletes_by_Year_NOC[str(year)]
  for noc, inf in x.items():
    g = 0
    s = 0
    b = 0
    for info in inf:
      med = info["Medal"]
      if med == 'Gold':
        g += 1
      elif med == 'Silver':
        s += 1
      elif med == 'Bronze':
        b += 1
    medals[noc] = (g, s, b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  scores = set(medals.values())
  top_five_score = sorted(list(scores), reverse=True)[:5]
  new_top_five = []
  for i in top_five_score:
    if i != (0, 0, 0):
      new_top_five.append(i)
  for score in new_top_five:
    x = []
    for country, medal in medals.items():
      if medal == score:
        x.append((country, medal[0], medal[1], medal[2]))
    for y in sorted(x):
      topfive.append(y)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    a = get_medals_by_team(athletes_by_Year_NOC, str(year))
    if NOC in a:
      medal = a[NOC]
      trend.append((str(year), medal[0], medal[1], medal[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      x = athletes_by_Year_NOC[year][NOC]
      for y in x:
        if y['Medal'] != 'NA':
          sports.add(y['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  z = []
  for noc in NOCs:
    b = get_sports(athletes_by_Year_NOC, noc, str(year))
    z.append(b)
  if set() in z:
    return set()
  return z[0].intersection(*z)
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532037221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1022, 'const': 888, 'code+const': 1910}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    if data[i][9] not in athletes_by_Year_NOC.keys():
      athletes_by_Year_NOC[data[i][9]] = {}
    q = {}
    for c in range(len(data[i])):
      q[data[0][c]] = data[i][c] 
    if data[i][7] not in athletes_by_Year_NOC[data[i][9]].keys():
      athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(q)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  abyn = athletes_by_Year_NOC
  y = year
  if y not in abyn.keys():
    return medals
  for i in abyn[y].keys():
    if i not in medals.keys():
      gold = 0
      silver = 0
      bronze = 0
      for k in abyn[y][i]:
        if k['Medal'] == 'Gold':
          gold += 1
        elif k['Medal'] == 'Silver':
          silver += 1
        if k['Medal'] == 'Bronze':
          bronze += 1
      medals[i] = ( gold , silver , bronze )
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  top = []
  for i in medals:
    top.append([-int(medals[i][0]),-int(medals[i][1]),-int(medals[i][2]),i])
  top.sort()
  c = 1
  s = top[0]
  for i in range(len(top)):
    if top[i][:-1:] != s[:-1:]:
      s = top[i]
      c += 1
      if len(topfive) >= 5:
        break
    topfive.append((top[i][-1],-int(top[i][0]),-int(top[i][1]),-int(top[i][2])))
    if c == 5 :
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  abyn = athletes_by_Year_NOC
  x = range(int(start),int(end)+1)
  for i in x :
    if str(i) in abyn.keys():
      if NOC in abyn[str(i)].keys():
        q = get_medals_by_team(abyn,str(i))
        for k in q.keys() :
          if k == NOC:
            trend.append((str(i),q[k][0],q[k][1],q[k][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  abyn = athletes_by_Year_NOC
  if year in abyn.keys():
    if NOC in abyn[year].keys():
      for k in abyn[year][NOC] :
        if k['Medal'] != 'NA':
          sports.add(k['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  abyn = athletes_by_Year_NOC
  cp = []
  for i in NOCs :
    cp.append(get_sports(abyn , i, year))
  sports = cp[0]
  for i in cp:
    sports = sports.intersection(i)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532042321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 792, 'const': 936, 'code+const': 1728}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  header = data[0]
  result = {}
  for row in data[1:]:
    year = row[9]
    noc = row[7]
    info_dict = {}
    for i in range(len(row)):
      info_dict[header[i].strip()] = row[i].strip()
    if year not in result:
      result[year] = {noc: [info_dict]}
    elif year in result:
      if noc not in result[year]:
        result[year][noc] = [info_dict]
      elif noc in result[year]:
        result[year][noc].append(info_dict)
  return result
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC.keys():
    return medals
  data = athletes_by_Year_NOC[year]
  for noc, info in data.items():
    gold_count, silver_count, bronze_count = 0, 0, 0
    for athlete in info:
      medal = athlete['Medal']
      if medal == 'Gold':
        gold_count += 1
      elif medal == 'Silver':
        silver_count += 1
      elif medal == 'Bronze':
        bronze_count += 1
    medals[noc] = (gold_count, silver_count, bronze_count)
  return medals
#======================================
def get_top_five(medals):
  result = []
  topfive_medals = [medal for medal in sorted(list(set(medals.values())), reverse=True)[:5] if medal != (0, 0, 0)]
  for target_medal in topfive_medals:
    pool = []
    for noc, medal in medals.items():
      if target_medal == medal:
        pool.append((noc, *target_medal))
    result += sorted(pool)
  return result
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    medals = get_medals_by_team(athletes_by_Year_NOC, str(year))
    if NOC in medals.keys():
      trend.append((str(year), *medals[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = []
  if year not in athletes_by_Year_NOC.keys():
    return set()
  elif NOC not in athletes_by_Year_NOC[year].keys():
    return set()
  for athlete_info in athletes_by_Year_NOC[year][NOC]:
    if athlete_info['Medal'] != 'NA':
      sports.append(athlete_info['Sport'])
  return set(sports)
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  all_noc_sport = []
  for noc in NOCs:
    all_noc_sport.append(get_sports(athletes_by_Year_NOC, noc, str(year)))
  previous_intersection = all_noc_sport[0]
  for i in range(1, len(all_noc_sport)):
    previous_intersection = previous_intersection.intersection(all_noc_sport[i])
  return previous_intersection
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532117821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 950, 'const': 1262, 'code+const': 2212}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    pl=[]
    aa=[]
    dall={}
    nociny = {}
    for i in range(1,len(data)):
        pl=data[i]
        if pl[9] not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[pl[9]]={}
        if pl[7] not in athletes_by_Year_NOC[pl[9]]:
          athletes_by_Year_NOC[pl[9]][pl[7]]=[]
        for j in range(len(data[i])):
            dall[data[0][j]]= pl[j]
        athletes_by_Year_NOC[pl[9]][pl[7]].append(dall)
        dall={}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        def count(d):
            g,s,b=0,0,0
            for j in d:#j={id1},{id2}
                if j['Medal']=="Gold":
                    g +=1
                elif j['Medal']=="Silver":
                    s +=1
                elif j['Medal']=="Bronze":
                    b +=1
            return g,s,b
        for i in athletes_by_Year_NOC[year]:
            a=count(athletes_by_Year_NOC[year][i])
            medals[i]=a
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    s={}
    for i in medals:
        if medals[i] not in s:
            s[medals[i]]=[]
        s[medals[i]].append(i)
        s[medals[i]].sort() 
    d=sorted(s.keys(),reverse=True)
    l=0
    #print(s)
    for j in d :
        l +=1
        if l > 5:
            break
        for k in s[j]:
            a=(k,j[0],j[1],j[2])
            topfive.append(a)
        if len(s[j])!=1:
            l +=1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    g,s,b=0,0,0
    for i in athletes_by_Year_NOC:
        if start<=int(i)<=end:
          if NOC in athletes_by_Year_NOC[i]:
            for j in athletes_by_Year_NOC[i][NOC]:
                if j['Medal']=="Gold":
                    g +=1
                elif j['Medal']=="Silver":
                    s +=1
                elif j['Medal']=="Bronze":
                    b +=1
            trend.append((i,g,s,b))
        #print(44)
          g,s,b=0,0,0
          trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
        for i in athletes_by_Year_NOC[year][NOC]:
            if i['Medal'] in ['Gold','Silver','Bronze']:
                sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    c=[]
    for i in NOCs:
        a=get_sports(athletes_by_Year_NOC,i, year)
        c.append(a)
    sports=c[0]
    for j in range(1,len(c)):
        sports = sports & c[j]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532147621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1078, 'const': 1239, 'code+const': 2317}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  row_name = data[0]
  for row in data[1:]:
    year = row[9]
    NOC = row[7]
    detail = {}
    for i in range(len(row)):     
      detail[row_name[i]] = row[i]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {NOC:[detail]}
    else:
      if NOC not in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year].update({NOC:[detail]})
      else: 
        athletes_by_Year_NOC[year][NOC].append(detail)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for nation in athletes_by_Year_NOC[year]:
      gold = 0
      silver = 0
      bronze = 0
      for name in athletes_by_Year_NOC[year][nation]:
        if name['Medal'] == 'Gold':
          gold +=1
        elif name['Medal'] == 'Silver':
          silver+=1
        elif name['Medal'] == 'Bronze':
          bronze+=1
      medals[nation] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  top_five = []
  top_new = []
  sort_con = []
  if len(medals) == 0:
    return []
  for (con,md) in medals.items():
    sort_con.append([list(md),con])
  sort_con.sort(reverse = True)
  top_new = [(b,)+ tuple(a) for a,b in sort_con]
  sorted_lst = sorted(top_new, key=lambda x: (-x[1],-x[2],-x[3], x[0]))
  old = sorted_lst[0][1:]
  count = 0
  for i in range(1,len(sorted_lst)):
      if old == sorted_lst[i][1:]:
        top_five.append(sorted_lst[i-1])
      else:
        top_five.append(sorted_lst[i-1])
        count+=1
      if count == 5:
        break
      old = sorted_lst[i][1:]
  if sorted_lst[len(sorted_lst)-1][1:] == top_five[len(top_five)-1][1:] and sorted_lst[len(sorted_lst)-1] != top_five[len(top_five)-1]:
    top_five.append(sorted_lst[len(sorted_lst)-1])
  return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if year%2==0:
      try:
        trend.append((str(year),)+get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC])
      except:
        pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  try:
    cop = athletes_by_Year_NOC[year][NOC]
    for name in cop:
      if name['Medal']!='NA':
        sports = sports | set([name['Sport']])
  except:
    pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  medal = []
  medal_con = []
  for NOC in NOCs:
    if NOC in athletes_by_Year_NOC[year]:
      for spt in athletes_by_Year_NOC[year][NOC]:
        if spt['Medal'] != "NA":
          medal.append(spt['Sport'])
      medal_con.append(medal)
      medal = []
    else:
      return set()
  sports = set(medal_con[0])
  for lst in medal_con:
    sports = sports & set(lst)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532183121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.96
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1), ('P', 3, 2, 0), ('X', 3, 2, 0)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 946, 'const': 1329, 'code+const': 2275}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  athletes_list = []
  athletes_dict = {}
  for i in range(1,len(data)):
      for e in range(len(data[0])):
          athletes_dict[data[0][e]] = data[i][e]
      athletes_list.append(athletes_dict)
      athletes_dict = {}
  for i in range(len(athletes_list)):
      year = athletes_list[i]["Year"]
      NOC = athletes_list[i]["NOC"]
      if year not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[year] = {}
      if NOC not in athletes_by_Year_NOC[year]:
          athletes_by_Year_NOC[year][NOC] = []
      athletes_by_Year_NOC[year][NOC].append(athletes_list[i])
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
      return medals
  for NOC in athletes_by_Year_NOC[year]:
      G = 0
      S = 0
      B = 0
      for v in athletes_by_Year_NOC[year][NOC]:
          if v["Medal"] == "Gold":
              G += 1
          if v["Medal"] == "Silver":
              S += 1
          if v["Medal"] == "Bronze":
              B += 1
          medals[NOC] = (G,S,B)
  return medals
#======================================
def get_top_five(medals): 
  topfive = []
  check = []
  for NOC in medals:
      t = (NOC,) + medals[NOC]
      check.append(t)
  check_sorted = sorted(check, key=lambda x: (-x[1], -x[2], -x[3]))
  medal = set()
  for e in check_sorted:
      if len(medal) != 5:
          medal.add(e[1::])
  medal = sorted(list(medal), key=lambda x: (-x[0], -x[1], -x[2]))
  for e in medal:
      for i in check_sorted:
          if e != (0,0,0) and e == i[1::]:
              topfive.append(i)        
  topfive = sorted(topfive, key=lambda x: (-x[1], -x[2], -x[3], x[0]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
      all_medal_in_year = get_medals_by_team(athletes_by_Year_NOC,str(year))
      for N in all_medal_in_year:
          if N == NOC:
              t = (str(year),) + all_medal_in_year[N]
              trend.append(t)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
      return sports
  elif get_medals_by_team(athletes_by_Year_NOC, year)[NOC] == (0,0,0):
      return sports
  for e in athletes_by_Year_NOC[year][NOC]:
      if e["Medal"] != "NA":
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs =list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  for N in NOCs[1:]:
      sports = sports & get_sports(athletes_by_Year_NOC, N, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532062921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_010.97
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1),
  ('Q', 9, 2, 0)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1238, 'const': 1101, 'code+const': 2339}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    year_pos=data[0].index('Year')
    noc_pos=data[0].index('NOC')
    key=data[0]
    for i in range(1,len(data)):
        if data[i][year_pos] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][year_pos]]= {}
        if data[i][noc_pos] not in athletes_by_Year_NOC[data[i][year_pos]]:
            athletes_by_Year_NOC[data[i][year_pos]][data[i][noc_pos]]= []
        dict_data={}
        for j in range(len(key)):
            dict_data[key[j]]=data[i][j]
        athletes_by_Year_NOC[data[i][year_pos]][data[i][noc_pos]].append(dict_data)        
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        select=athletes_by_Year_NOC[year]
        for i in select:
            medals[i]=[0,0,0]
        for i in select:
            country=i
            for j in select[i]:
                medal=j['Medal']
                if medal=='Gold':
                    medals[i][0]+=1
                elif medal=='Silver':
                    medals[i][1]+=1
                elif medal=='Bronze':
                    medals[i][2]+=1
        for e in medals:
            medals[e]=tuple(medals[e])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    if medals!={}:
        c_m=tuple(sorted(j+(i,) for i,j in medals.items()))
        c_m=c_m[::-1]
        five=[]
        count=0
        keep=[]
        for i in range(1,len(c_m)):
            keep.append((c_m[i-1][-1],)+c_m[i-1][:3])
            if c_m[i-1][0]>c_m[i][0]:#gold
                keep=sorted(keep)
                five.append(keep)
                count+=len(keep)
                keep=[]
            elif c_m[i-1][1]>c_m[i][1]:#gold
                keep=sorted(keep)
                five.append(keep)
                count+=len(keep)
                keep=[]
            elif c_m[i-1][2]>c_m[i][2]:#gold
                keep=sorted(keep)
                five.append(keep)
                count+=len(keep)
                keep=[]
            if count==5: break
        if count<5:
            keep.append((c_m[i][-1],)+c_m[i][:3])
            keep=sorted(keep)
            five.append(keep)
        for e in five:
            topfive+=tuple(e)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1):
        if year%2==0 :
            allmedal_inyear=get_medals_by_team(athletes_by_Year_NOC, str(year))
            if NOC in allmedal_inyear:
                trend.append((str(year),)+allmedal_inyear[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    s=[]
    for country in NOCs:
        if year in athletes_by_Year_NOC:
            if country in athletes_by_Year_NOC[year]:
                s.append(get_sports(athletes_by_Year_NOC, country, year))
            else: s.append(set())
    if s[0]!=set():
        for e in s[0]:
            sports.add(e)
    for i in range(1,len(s)):
        sports=sports&s[i]   
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6231406721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 880, 'const': 1041, 'code+const': 1921}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  key2id = key_to_id_dict(data)
  for row in data[1:]:
    year = row[key2id["Year"]]
    noc = row[key2id["NOC"]]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = dict()
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = list()
    row_dict = {data[0][i]: row[i] for i in range(len(row))}
    athletes_by_Year_NOC[year][noc] += [row_dict]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc, athletes in athletes_by_Year_NOC[year].items():
    gold = 0
    silver = 0
    bronze = 0
    for ath in athletes:
      if ath["Medal"] == "Gold":
        gold += 1
      elif ath["Medal"] == "Silver":
        silver += 1
      elif ath["Medal"] == "Bronze":
        bronze += 1
    medals[noc] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals_list = [(noc, gold, silver, bronze) for noc, (gold, silver, bronze) in medals.items()]
  medals_list.sort(key=lambda x: (-x[1], -x[2], -x[3], x[0]))
  topfive = medals_list[:5]
  last_noc, min_gold, min_silver, min_bronze = topfive[-1]
  for (noc, gold, silver, bronze) in medals_list[5:]:
    if (gold, silver, bronze) == (min_gold, min_silver, min_bronze):
      topfive += [(noc, gold, silver, bronze)]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start, end + 1):
    year = str(y)
    if year in athletes_by_Year_NOC:
      medals = get_medals_by_team(athletes_by_Year_NOC, year)
      if NOC in medals:
        gold, silver, bronze = medals[NOC]
        trend += [(year, gold, silver, bronze)]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    athletes = athletes_by_Year_NOC[year][NOC]
    for ath in athletes:
      if ath["Medal"] != "NA":
        sports.add(ath["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  for NOC in NOCs:
    NOC_sports = get_sports(athletes_by_Year_NOC, NOC, year)
    sports = sports.intersection(NOC_sports)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def key_to_id_dict(data):
  return {data[0][i]: i for i in range(len(data[0]))}

6430092221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 956, 'const': 1932, 'code+const': 2888}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for row in data[1:]:
        year = row[9]
        noc = row[7]
        athlete = {
            "ID": row[0],
            "Name": row[1],
            "Sex": row[2],
            "Age": row[3],
            "Height": row[4],
            "Weight": row[5],
            "Team": row[6],
            "NOC": row[7],
            "Games": row[8],
            "Year": row[9],
            "Season": row[10],
            "City": row[11],
            "Sport": row[12],
            "Event": row[13],
            "Medal": row[14]
        }
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(athlete)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for team in athletes_by_Year_NOC[year]:
        medals[team] = [0, 0, 0]
        for athlete in athletes_by_Year_NOC[year][team]:
            if athlete['Medal'] == 'Gold':
                medals[team][0] += 1
            elif athlete['Medal'] == 'Silver':
                medals[team][1] += 1
            elif athlete['Medal'] == 'Bronze':
                medals[team][2] += 1
        medals[team] = tuple(medals[team])
    return medals
#======================================
def get_top_five(medals):
    top_five = []
    for country, counts in sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0])):
        if len(top_five) < 5 or counts == top_five[-1][1:]:
            top_five.append((country, counts[0], counts[1], counts[2]))
        else:
            break
    return top_five
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    gold = 0
    silver = 0
    bronze = 0
    if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]:
      for medal in athletes_by_Year_NOC[str(year)][NOC]:
        if medal['Medal'] == 'Gold':
          gold += 1
        elif medal['Medal'] == 'Silver':
          silver += 1
        elif medal['Medal'] == 'Bronze':
          bronze += 1
    else:
      continue
    trend.append((str(year), gold, silver, bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for athlete in athletes_by_Year_NOC[year][NOC]:
            if athlete['Medal'] != 'NA':
                sports.add(athlete['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = None
    for noc in NOCs:
        if year not in athletes_by_Year_NOC or noc not in athletes_by_Year_NOC[year]:
            return set()
        else:
            noc_sports = set(athlete["Sport"] for athlete in athletes_by_Year_NOC[year][noc] if athlete["Medal"] != "NA")
            if sports is None:
                sports = noc_sports
            else:
                sports = sports.intersection(noc_sports)
    return sports 
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6430170521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 938, 'const': 1244, 'code+const': 2182}
check_import({'allowable': ['math', 'csv']}) deep: [[('functools', 31)]]
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    key = data[0]
    for i in data[1:]:
        if (i[9] not in athletes_by_Year_NOC):
            athletes_by_Year_NOC[i[9]] = dict()
        if (i[7] not in athletes_by_Year_NOC[i[9]]):
            athletes_by_Year_NOC[i[9]][i[7]] = []
        a = dict()
        for j in range(len(i)):
            a[key[j]] = i[j]
        athletes_by_Year_NOC[i[9]][i[7]].append(a)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    key = ["Gold", "Silver", "Bronze"]
    for i in athletes_by_Year_NOC[year]:
        if i not in medals:
            medals[i] = (0, 0, 0)
        a = list(medals[i])
        for j in athletes_by_Year_NOC[year][i]:
            for k in range(3):
                if j["Medal"] == key[k]:
                    a[k] += 1
        medals[i] = tuple(a)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    from functools import cmp_to_key
    def cmp(a, b):
        if a[1] > b[1]:
            return -1
        elif a[1] == b[1]:
            if a[0] > b[0]:
                return 1
            else:
                return -1
        else:
            return 1
    cmpp = cmp_to_key(cmp)
    a = sorted(medals.items(), key=cmpp)
    cou = 0
    for i in a:
        if cou < 5 or (cou >= 5 and topfive[-1][1:] == i[1]):
            topfive.append(tuple([i[0]]+list(i[1])))
            cou += 1
        else:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    ans = dict()
    key = ["Gold", "Silver", "Bronze"]
    for i in athletes_by_Year_NOC:
        if int(i) < start or int(i) > end:
            continue
        if NOC not in athletes_by_Year_NOC[i]:
            continue
        if i not in ans:
            ans[i] = [0, 0, 0]
        for j in athletes_by_Year_NOC[i][NOC]:
            for k in range(3):
                if j["Medal"] == key[k]:
                    ans[i][k] += 1
    for i in ans.items():
        trend.append(tuple([i[0]]+i[1]))
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    key = ["Gold", "Silver", "Bronze"]
    sports = set()
    if (year not in athletes_by_Year_NOC) or (NOC not in athletes_by_Year_NOC[year]):
        return set()
    for i in athletes_by_Year_NOC[year][NOC]:
        if (i["Medal"] in key):
            sports.add(i["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    ch = 1
    for i in NOCs:
        if ch == 1:
            sports = get_sports(athletes_by_Year_NOC, i, year)
            ch = 0
        else:
            sports.intersection_update(get_sports(athletes_by_Year_NOC, i, year))
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
# d = convert_to_dict(data)
# print(len(d['2000']['THA']))
# for i in range(5):
#  print(d['2000']['THA'][i])
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(len(m))
# print(m)
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(get_top_five(m))
# d = convert_to_dict(data)
# print('USA')
# print(get_medals_trend(d, 'USA', 2001, 2015))
# print('THA')
# print(get_medals_trend(d, 'THA', 2000, 2016))
# d = convert_to_dict(data)
# print(get_sports(d, 'THA', '2000'))
# print(get_sports(d, 'THA', '2010'))
# print(get_sports(d, 'THA', '2020'))
# print(get_sports(d, 'SOM', '2000'))
# print(get_sports(d, 'THA', '2008'))
# print(get_sports(d, 'VIE', '2008'))
# print(get_sports(d, 'DEN', '2008'))
# print(get_sports(d, 'XXX', '2000'))
# d = convert_to_dict(data)
# print(get_common_sports(d, {'THA','VIE'}, '2008'))
# print(get_common_sports(d, {'THA','VIE','DEN'}, '2008'))
# print(get_common_sports(d, {'THA','XXX'}, '2008'))
# d_mock = convert_to_dict(data_mock)
# m_mock = get_medals_by_team(d_mock, '2010')
# print(get_top_five(m_mock))

6430405021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1104, 'const': 949, 'code+const': 2053}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    indexYear = data[0].index("Year")
    indexNOC = data[0].index("NOC")
    for i in range(1 ,len(data)):
        year=data[i][indexYear]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year]={}
    for j in range(1,len(data)):
        year=data[j][indexYear]
        NOC=data[j][indexNOC]
        if NOC not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][NOC]=[]
    for k in range(1,len(data)):
        year=data[k][indexYear]
        NOC=data[k][indexNOC]
        tmp={}
        for i in range(len(data[0])):
            tmp[data[0][i]]=data[k][i]
        athletes_by_Year_NOC[year][NOC].append(tmp)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if int(year)%2!=0 or year not in athletes_by_Year_NOC:
        return medals
    for i in athletes_by_Year_NOC[year]:
        if i not in medals:
            medals[i]=[0,0,0]
    for j in athletes_by_Year_NOC[year]:
        dataNum=len(athletes_by_Year_NOC[year][j])
        for k in range(dataNum):
            if athletes_by_Year_NOC[year][j][k]['Medal']=="Gold":
                medals[j][0]+=1
            elif athletes_by_Year_NOC[year][j][k]['Medal']=="Silver":
                medals[j][1]+=1
            elif athletes_by_Year_NOC[year][j][k]['Medal'] == "Bronze":
                medals[j][2]+=1
    for i in medals:
        medals[i]=tuple(medals[i])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    reverse_medals={}
    checktop=0
    for i in medals:
        if medals[i] not in reverse_medals:
            reverse_medals[medals[i]]=[i]
        else:
            reverse_medals[medals[i]].append(i)
    for j in sorted(reverse_medals)[::-1]:
        if checktop<5:
            for k in sorted(reverse_medals[j]):
                tmp=list(j)
                tmp.insert(0,k)
                topfive.append(tuple(tmp))
        checktop+=len(reverse_medals[j])
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if start%2!=0:
        start+=1
    if end%2!=0:
        end-=1
    year=[]
    for i in range(start,end+1,2):
        year.append(str(i))
    for i in year:
        x=get_medals_by_team(athletes_by_Year_NOC,i)
        if NOC in x:
            tmp=x[NOC]
            tmp=list(tmp)
            tmp.insert(0,i)
            trend.append(tuple(tmp))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
          for i in range(len(athletes_by_Year_NOC[year][NOC])):
              if athletes_by_Year_NOC[year][NOC][i]['Medal'] != 'NA':
                  sports.add(athletes_by_Year_NOC[year][NOC][i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    tmp = set()
    for i in NOCs:
        if tmp == set():
            tmp=get_sports(athletes_by_Year_NOC,i,year)
        else:
            sports=tmp.intersection(get_sports(athletes_by_Year_NOC,i,year))
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431508221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 934, 'const': 1077, 'code+const': 2011}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      d = dict()
      for j in range(len(data[0])):
        d[data[0][j]] = data[i][j]
      if d["Year"] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[d["Year"]] = dict()
      if d["NOC"] not in athletes_by_Year_NOC[d["Year"]]:
        athletes_by_Year_NOC[d["Year"]][d["NOC"]] = list()
      athletes_by_Year_NOC[d["Year"]][d["NOC"]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return medals
  for noc in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for i in athletes_by_Year_NOC[year][noc]:
      if i["Medal"] == "Gold":
        g+=1
      if i["Medal"] == "Silver":
        s+=1
      if i["Medal"] == "Bronze":
        b+=1
    medals[noc] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  tmp = []
  for i in medals:
    tmp.append((-medals[i][0],-medals[i][1],-medals[i][2],i))
  tmp.sort()
  for i in range (len(tmp)):
    if i <= 4:
      topfive.append((tmp[i][3],-tmp[i][0],-tmp[i][1],-tmp[i][2]))
    else :
      if tmp[i][0] == tmp[i-1][0] and tmp[i][1] == tmp[i-1][1] and tmp[i][2] == tmp[i-1][2]:
        topfive.append((tmp[i][3],-tmp[i][0],-tmp[i][1],-tmp[i][2]))
      else :
        break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    d = get_medals_by_team(athletes_by_Year_NOC, str(year))
    if NOC in d:
      trend.append((str(year),d[NOC][0],d[NOC][1],d[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for data in athletes_by_Year_NOC[year][NOC]:
        if data["Medal"] == "Gold" or data["Medal"] == "Silver" or data["Medal"] == "Bronze":
          sports.add(data["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  firstTime = True
  for i in NOCs:
    s = get_sports(athletes_by_Year_NOC,i,year)
    if firstTime:
      sports = s
      firstTime = False
    else :
      sports = sports.intersection(s)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6431536821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1038, 'const': 992, 'code+const': 2030}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  y = 0
  noc = 0
  if len(data) == 0: #don't have data
    return athletes_by_Year_NOC
  for i in range(len(data[0])):
    if data[0][i] == 'Year':
      y = i
    if data[0][i] == 'NOC':
      noc = i
  for i in range(1,len(data)):
    if data[i][y] not in athletes_by_Year_NOC: 
      athletes_by_Year_NOC[data[i][y]] = {}
    if data[i][noc] not in athletes_by_Year_NOC[data[i][y]]:
      athletes_by_Year_NOC[data[i][y]][data[i][noc]] = []
    new_d = {}
    for j in range(len(data[i])):
      new_d[data[0][j]] = data[i][j]
    athletes_by_Year_NOC[data[i][y]][data[i][noc]].append(new_d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for noc,listt in athletes_by_Year_NOC[year].items():
      gold_medal = 0;silver_medal=0;bronze_medal=0;
      for d in listt:
        if d['Medal'] == 'Gold':
          gold_medal+=1
        if d['Medal'] == 'Silver':
          silver_medal+=1
        if d['Medal'] == 'Bronze':
          bronze_medal+=1
        if d['Medal'] == 'NA':
          continue
      medals[noc] = (gold_medal,silver_medal,bronze_medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l = []
  for noc in medals:
    t = medals[noc]
    l.append((-t[0],-t[1],-t[2],noc))#max -> min if equal sort by noc
  l.sort()
  for i in range(len(l)):
    new_t = (l[i][3],-l[i][0],-l[i][1],-l[i][2])
    if i <= 4:
      topfive.append(new_t)
      continue
    if new_t[1] == -l[i-1][0] and new_t[2] == -l[i-1][1] and new_t[3] == -l[i-1][2]:
      topfive.append(new_t)
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    year = str(i)
    d = get_medals_by_team(athletes_by_Year_NOC,year)
    if NOC in d:
      new_t = (year,) + d[NOC]
      trend.append(new_t)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    for noc,listt in athletes_by_Year_NOC[year].items():
      if noc == NOC:
        for d in listt:
          if d['Medal'] != 'NA':
            sports.add(d['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_of_sports = []
  for noc in NOCs:
    s = get_sports(athletes_by_Year_NOC,noc,year)
    list_of_sports.append(s)
  if len(list_of_sports) == 1:
    sports = list_of_sports[0]
  if len(list_of_sports) >= 2:
    sports = list_of_sports[0] & list_of_sports[1]
    for i in range(2,len(list_of_sports)):
      sports = sports & list_of_sports[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530217521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 912, 'const': 968, 'code+const': 1880}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {} #data[i][9] ปี data[i][7] ประเทศ
  for i in range(1,len(data)):#แถว
    if data[i][9] in athletes_by_Year_NOC: #เคยมีซ้ำ
      if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
        pass
      else:
         athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    else: 
      athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[]}
    a = {}
    for j in range(len(data[0])):#คอลัม
      a[data[0][j]] = data[i][j]
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for NOC in athletes_by_Year_NOC[year]:
      gold = 0 ; silver = 0 ; bronze = 0 
      for data in athletes_by_Year_NOC[year][NOC]:
        if data["Medal"] == "Gold":
          gold += 1
        elif data["Medal"] == "Silver":
          silver += 1
        elif data["Medal"] == "Bronze":
          bronze += 1
      medals[NOC] = (gold,silver,bronze) 
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  list_medal = []
  for NOC in medals:
    medal = medals[NOC]
    find = False
    for i in range(len(list_medal)):
      if list_medal[i][0] == medal:
        list_medal[i][1].append(NOC)
        find = True
    if find == False:
      list_medal.append([medal,[NOC]])
  list_medal.sort()
  list_medal = list_medal[::-1]
  count = 5
  for i in range(len(list_medal)) :
    if count <= 0 :
      break
    list_medal[i][1].sort()
    for NOC in list_medal[i][1] :
      topfive.append((NOC, list_medal[i][0][0], list_medal[i][0][1], list_medal[i][0][2]))
      count -= 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    medals = get_medals_by_team(athletes_by_Year_NOC,str(i))
    if NOC in medals:
      trend.append((str(i),medals[NOC][0],medals[NOC][1],medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]:
        if i["Medal"] != "NA":
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  check_NOC = False
  for NOC in NOCs:        
    sport = get_sports(athletes_by_Year_NOC,NOC,year)
    if check_NOC == False:
      check_NOC = True
      sports = sport
    sports = sports & sport 
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530218121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 788, 'const': 1113, 'code+const': 1901}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for x in data[1:]:
    d = {}
    for i in range(len(data[0])):
      d[data[0][i]] = x[i]
    if d["Year"] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[d["Year"]] = {}
    if d["NOC"] not in athletes_by_Year_NOC[d["Year"]]:
      athletes_by_Year_NOC[d["Year"]][d["NOC"]] = []
    athletes_by_Year_NOC[d["Year"]][d["NOC"]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  l = [0,0,0]
  for x in athletes_by_Year_NOC[year]:
    for y in athletes_by_Year_NOC[year][x]:
      if y["Medal"] == "Gold":
        l[0] += 1
      elif y["Medal"] == "Silver":
        l[1] += 1
      elif y["Medal"] == "Bronze":
        l[2] += 1
    medals[x] = tuple(l)
    l = [0,0,0]
  return medals
#======================================
def get_top_five(medals):
  s =  [(i[0], *i[1]) for i in sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))]
  return [j for i,j in enumerate(s) if (i < 5 or j[1:] == s[min(4, len(s)-1)][1:])]
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    i = str(i)
    if i in athletes_by_Year_NOC:
      medals = get_medals_by_team(athletes_by_Year_NOC, i)
      if NOC in medals:
        trend.append((i,*medals[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal'] != "NA":
        sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  return set.intersection(*[get_sports(athletes_by_Year_NOC, NOC, year) for NOC in NOCs])
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530219821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 984, 'const': 1089, 'code+const': 2073}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    year0 = data[0].index('Year') #9
    noc0 = data[0].index('NOC') #7
    for i in range(1,len(data)):
        dic_id = {} #{'ID':..,'Name':..}
        lis_id = [] #[{'ID':..,'Name':..}]
        dic_noc = {} #{noc:[{'ID':..,'Name':..}]}
        for j in range(len(data[0])):
            dic_id[data[0][j]] = data[i][j] #{'ID':..,'Name':..}
        year1 = data[i][year0] #2012
        noc1 = data[i][noc0] #CHN
        if year1 not in athletes_by_Year_NOC:
            lis_id.append(dic_id)
            dic_noc[noc1] = lis_id
            athletes_by_Year_NOC[year1] = dic_noc
        elif year1 in athletes_by_Year_NOC and noc1 not in athletes_by_Year_NOC[year1]:
            #ปีซ้ำแต่ประเทศไม่ซ้ำ
            dic_noc = athletes_by_Year_NOC[year1] #dic_noc = {noc1:[id],noc2:[id]}
            lis_id.append(dic_id) #[{'ID':..,'Name':..}]
            dic_noc[noc1] = lis_id
            athletes_by_Year_NOC[year1] = dic_noc
        else: # ปีซ้ำและประเทศซ้ำ
            dic_noc = athletes_by_Year_NOC[year1] #dic_noc = {noc1:[{id}],noc2:[{id}]}
            lis_id = dic_noc[noc1] #[{id:..,name:...}]
            lis_id.append(dic_id) #[{id:..,name:...},{id1:..,name1:...}]
            dic_noc[noc1] = lis_id
            athletes_by_Year_NOC[year1] = dic_noc
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for i in athletes_by_Year_NOC[year]: #i = CHN,FIN
        win = [0,0,0]
        all_id_noc = athletes_by_Year_NOC[year][i] #[{'ID':.., 'Name':..,},{'ID':.., 'Name':..,}]
        for j in range(len(all_id_noc)):
            price = all_id_noc[j]['Medal'] #NA
            if price == 'Gold':
                win[0]+=1
            elif price == 'Silver':
                win[1]+=1
            elif price == 'Bronze':
                win[2]+=1
            else:
                pass
        tup = (win[0],win[1],win[2])
        medals[i] = tup
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    rank_M = {}
    for i in medals:
        m_list = medals[i]
        if not m_list in rank_M:
            rank_M[m_list] = []
        rank_M[m_list].append(i)
    for k in sorted(rank_M.keys())[::-1]:
        if len(topfive) >= 5: break
        for j in sorted(rank_M[k]):
            tup = tuple([j,k[0],k[1],k[2]])  
            topfive.append(tup)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1): # i = 2015
        if str(i) in athletes_by_Year_NOC: # 2015 in 2015
            m = get_medals_by_team(athletes_by_Year_NOC, str(i)) # {'FIN': (3, 1, 1), 'NOR': (20, 4, 19)}
            if NOC in m:
                med = m[NOC]
                med1 = (str(i),)+med
                trend.append(med1)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        all_noc = athletes_by_Year_NOC[year] #{'CHN':[{},{}],'FIN':[{},{}]}
        if NOC in all_noc:
            all_id = all_noc[NOC] #[{id:..},{id:..}]
            for i in range(len(all_id)): #i=3
                med = all_id[i]['Medal']
                if med=='Gold' or med=='Silver' or med=='Bronze':
                    sport = all_id[i]['Sport']
                    sports.add(sport)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    NOCs1 = []
    for j in NOCs:
        NOCs1.append(j)
    for i in range(len(NOCs)): #2
        NOC = NOCs1[i]
        spo = get_sports(athletes_by_Year_NOC, NOC, year) #{'Weightlifting', 'Boxing'}
        if i == 0:
            sports = spo
        else:
            sports = sports.intersection(spo)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530224921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1406, 'const': 1085, 'code+const': 2491}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    insid = {}
    insid1 = {}
    insidee = []
    typed = data[0]
    q = 0
    for i in range(1,len(data)):
        q = 0
        insid = {}
        for j in range(len(typed)):
            insid[typed[j]] = data[i][q]
            q += 1
        insidee.append(insid)
    for i in range(len(insidee)):
        if insidee[i]['Year'] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[insidee[i]['Year']] = {insidee[i]['NOC'] : [insidee[i]]}
        else:
            if insidee[i]['NOC'] not in athletes_by_Year_NOC[insidee[i]['Year']]:
                athletes_by_Year_NOC[insidee[i]['Year']][insidee[i]['NOC']] = [insidee[i]]
            else:
                athletes_by_Year_NOC[insidee[i]['Year']][insidee[i]['NOC']].append(insidee[i])
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    rian = [0,0,0]
    for e in athletes_by_Year_NOC:
        if year in e:
            x = athletes_by_Year_NOC[year]
            for i in x:
                for j in range(len(athletes_by_Year_NOC[year][i])):
                    if athletes_by_Year_NOC[year][i][j]['Medal'] == 'Gold':
                        rian[0] += 1
                    if athletes_by_Year_NOC[year][i][j]['Medal'] == 'Silver':
                        rian[1] += 1
                    if athletes_by_Year_NOC[year][i][j]['Medal'] == 'Bronze':
                        rian[2] += 1
                medals[i] = (rian[0],rian[1],rian[2])
                rian = [0,0,0]
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    country = []
    newcountry = []
    for k,v in medals.items():
        country.append([v,k])
    a = sorted(country)
    b = a[::-1]
    for i in range(5):
        for j in range(1):
            newcountry.append((b[i][1],b[i][0][j],b[i][0][j+1],b[i][0][j+2]))
    for i in range(len(b)-5):
        if (newcountry[4][1],newcountry[4][2],newcountry[4][3]) == b[5+i][0]:
            newcountry.append((b[5+i][1],b[5+i][0][0],b[5+i][0][1],b[5+i][0][2]))
    for j in range(len(newcountry)):
        for i in range(len(newcountry)-1):
            if [newcountry[i][1],newcountry[i][2],newcountry[i][3]] == [newcountry[i+1][1],newcountry[i+1][2],newcountry[i+1][3]]:
                if newcountry[i][0] > newcountry[i+1][0]:
                    newcountry[i],newcountry[i+1] = newcountry[i+1],newcountry[i]
    return newcountry
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for e in athletes_by_Year_NOC :
        if start <= int(e) <= end:
            if NOC in athletes_by_Year_NOC[e]:
                a = get_medals_by_team(athletes_by_Year_NOC, e)
                trend.append((e,a[NOC][0],a[NOC][1],a[NOC][2]))
                trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        x = athletes_by_Year_NOC[year]
        if NOC in athletes_by_Year_NOC[year] :
            for i in range(len(x[NOC])):
                if x[NOC][i]['Medal'] != 'NA':
                    sports.add(x[NOC][i]['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    xx = []
    if len(NOCs) == 0:
        return sports
    else:
        if year in athletes_by_Year_NOC:
            x = athletes_by_Year_NOC[year]
            for e in NOCs:
                if e in x:
                    xx.append((get_sports(athletes_by_Year_NOC, e, year)))
                else:
                    xx.append(set())
        sports = set.intersection(*xx)
    return sports

6530225521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1120, 'const': 1048, 'code+const': 2168}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    col=data[0]
    for e in data[1::]:
        if e[9] not in athletes_by_Year_NOC:
            noc={}
            for i in range(len(col)):
                noc[col[i]]=e[i]
            athletes_by_Year_NOC[e[9]]={e[7]:[noc]}
        else:
            if e[7] not in athletes_by_Year_NOC[e[9]]:
                noc={}
                for i in range(len(col)):
                    noc[col[i]]=e[i]
                athletes_by_Year_NOC[e[9]][e[7]]=[noc]
            else:
                noc={}
                for i in range(len(col)):
                    noc[col[i]]=e[i]
                athletes_by_Year_NOC[e[9]][e[7]].append(noc)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC:
        return medals
    else:
        by_year=athletes_by_Year_NOC[year] #if year in athbyyearnoc?
        for nation in by_year:
            g=0
            s=0
            b=0
            for ath in by_year[nation]:
                if ath['Medal']=='Gold':
                    g+=1
                elif ath['Medal']=='Silver':
                    s+=1
                elif ath['Medal']=='Bronze':
                    b+=1
            medals[nation]=(g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    topf=[]
    order=[]
    for key,value in medals.items():
        order.append([value[0],value[1],value[2],key])
        bygold=sorted(order,reverse=True)
    for i in range(5):
        topf.append(bygold[i])
    for e in bygold[5::]:
        if e[:-1]==bygold[4][:-1]:
            topf.append(e)
    ans=[]
    for i in range(len(topf)):
        for j in range(len(topf)-1):
            a=topf[j]
            b=topf[j+1]
            if a[:-1]==b[:-1]:
                if a[-1]>b[-1]:
                    topf[j],topf[j+1]=topf[j+1],topf[j]
    for i in topf:
        ans.append((i[-1],i[0],i[1],i[2]))
    topfive=ans    
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1,1):
        if str(year) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(year)]:
                  med=get_medals_by_team(athletes_by_Year_NOC,str(year))[NOC]
                  trend.append((str(year),med[0],med[1],med[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            x=athletes_by_Year_NOC[year][NOC]
            for e in x:
                if e['Medal']!='NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year): # case:nocs={}
    sports = set()
    nested=[]
    if len(NOCs)==0:
        return sports
    else:
        for i in NOCs:
            nested.append(get_sports(athletes_by_Year_NOC,i,year))
        common=set()
        c = nested[0].intersection(nested[1])
        if len(nested) > 2:
            for j in nested[2:]: #2?
                c = c.intersection(j)
        sports=set(c)
    return sports
#======================================
# # สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530226121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 914, 'const': 1136, 'code+const': 2050}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  cat = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
  for i in range(1, len(data)):
      year = data[i][9]
      NOC = data[i][7]
      if year not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[year] = {}
      if NOC not in athletes_by_Year_NOC[year]:
          athletes_by_Year_NOC[year][NOC] = []
      new = {}
      for k in range(15):
          new[cat[k]] = data[i][k]
      athletes_by_Year_NOC[year][NOC] += [new]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
    medals[i] = collect(athletes_by_Year_NOC, i, year)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  x = pack(medals)
  for m,n in x[:5]:
    topfive.append((n, -m[0], -m[1], -m[2]))
  for i in range(5,len(medals)):
    if x[i][0] == x[i-1][0]:
      topfive.append((x[i][1], -x[i][0][0], -x[i][0][1], -x[i][0][2]))
    else : break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if (str(i) in athletes_by_Year_NOC) and (NOC in athletes_by_Year_NOC[str(i)]):
      med = collect(athletes_by_Year_NOC,NOC,str(i))
      trend.append((str(i), med[0], med[1], med[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if (year in athletes_by_Year_NOC) and (NOC in athletes_by_Year_NOC[year]):
    for e in athletes_by_Year_NOC[year][NOC]:
      if (e["Medal"] != "NA") :
        sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s = []
  for NOC in NOCs:
    s.append(get_sports(athletes_by_Year_NOC, NOC, year))
  sports = s[0]
  for i in range(len(s)):
    sports = sports & s[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def collect(d, NOC, year):
  g = 0 ; s = 0 ; b = 0
  c = d[year][NOC]
  for e in c:
    if e["Medal"] == "Gold":
      g += 1
    if e["Medal"] == "Silver":
      s += 1
    if e["Medal"] == "Bronze":
      b += 1
  return (g,s,b)
def pack(d):
  out = []
  for k,v in d.items():
    out.append([(-v[0],-v[1],-v[2]),k])
  out.sort()
  #out = out[::-1]
  return out

6530229021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1184, 'const': 1161, 'code+const': 2345}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    before_noc = []
    for i in range(1, len(data)):
        key = {}
        for j in range(len(data[0])):
            key[data[0][j]] = data[i][j]
        before_noc.append(key)
    num_year = []
    for i in before_noc:
        num_year.append(i['Year'])
    athletes_by_Year_NOC = {}
    a = int(min(num_year))
    b = int(max(num_year))
    for i in range(a, b + 1):
        after_noc = {}
        for j in before_noc:
            after_noc[j['NOC']] = []
        athletes_by_Year_NOC[str(i)] = after_noc
    for j in before_noc:
        athletes_by_Year_NOC[j['Year']][j['NOC']].append(j)
    delete = []
    for i in athletes_by_Year_NOC:
        for j in athletes_by_Year_NOC[str(i)].items():
            if len(j[1]) == 0:
                delete.append([i, j[0]])
    for a, b in delete:
        del athletes_by_Year_NOC[a][b]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for i in athletes_by_Year_NOC[year]:
            medals[i] = [0,0,0]
        for i in athletes_by_Year_NOC[year]:
            for j in athletes_by_Year_NOC[year][i]:
                if len(j) != 0:
                    if j['Medal'] == 'Gold':
                        medals[i][0] += 1
                    if j['Medal'] == 'Silver':
                        medals[i][1] += 1
                    if j['Medal'] == 'Bronze':
                        medals[i][2] += 1
    for i in medals.items():
        medals[i[0]] = tuple(i[1])
    return medals
#======================================
def get_top_five(medals):
    ans = sorted(medals.items(), key = lambda x:x[1], reverse=True)
    first = []
    for i in ans:
        first.append((i[0],i[1][0],i[1][1],i[1][2]))
    topfive = [first[i] for i in range(5)]
    for i in range(5,len(first)):
        if first[4][1:] == first[i][1:]:
            topfive.append(first[i])
    for i in range(len(topfive)):
        for j in range(len(topfive)-1):
            if topfive[j][1:] == topfive[j+1][1:]:
                if topfive[j][0] > topfive[j+1][0]:
                    swap = topfive[j]
                    topfive[j] = topfive[j+1]
                    topfive[j+1] = swap
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start, end+1):
        a = get_medals_by_team(athletes_by_Year_NOC, str(i))
        if NOC in a:
            b = a[NOC]
            trend.append((str(i), b[0], b[1], b[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i['Medal'] != 'NA':
                    sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if len(NOCs) <= 1:
        return sports
    aa = []
    for i in NOCs:
        aa.append(get_sports(athletes_by_Year_NOC, i, year))
    sports = set.intersection(*aa)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530231221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 998, 'const': 1456, 'code+const': 2454}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):   
    athletes_by_Year_NOC = {}
    for row in data[1:]:
        column_dict = {'ID': row[0], 'Name': row[1], 'Sex': row[2], 'Age': row[3], 'Height': row[4], 'Weight': row[5], 'Team': row[6], 'NOC': row[7], 'Games': row[8], 'Year': row[9], 'Season': row[10], 'City': row[11], 'Sport': row[12], 'Event': row[13], 'Medal': row[14]}
        year = row[9]
        NOC = row[7]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if NOC not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][NOC] = []
        athletes_by_Year_NOC[year][NOC].append(column_dict)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year  in athletes_by_Year_NOC:
      for NOC in athletes_by_Year_NOC[year]:
          gold,silver,bronze = 0,0,0
          info = athletes_by_Year_NOC[year][NOC]
          for column in info:
                if column['Medal'] == 'Gold':
                      gold += 1
                elif column['Medal'] == 'Silver':
                      silver += 1
                elif column['Medal'] == 'Bronze':
                      bronze += 1 
          medals[NOC] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    d = {}
    medal = set()
    for NOC in medals:
        if medals[NOC] not in d:
            d[medals[NOC]] = [NOC]
        else:
            d[medals[NOC]] += [NOC]
        medal.add(medals[NOC])
    for NOC in d:
        d[NOC].sort()
    medal = sorted(medal)
    medal = medal[::-1]
    for y in medal:
        for b in d[y]:
            topfive.append(tuple([b]+list(y)))
        if len(topfive) >= 5:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if start%2 != 0:
        start +=1
    if end%2 != 0:
        end -=1
    for year in range(start,end+1):
        if str(year)  in athletes_by_Year_NOC:
          two = get_medals_by_team(athletes_by_Year_NOC,str(year))
          if NOC in two:
            gold,silver,bronze =two[NOC][0],two[NOC][1],two[NOC][2]
            t = (str(year),gold,silver,bronze)
            trend.append(t)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if str(year) in athletes_by_Year_NOC:  
      if NOC in athletes_by_Year_NOC[str(year)]:   
        info = athletes_by_Year_NOC[year][NOC]        
        for column in info:          
          if column['Medal'] == 'Gold':
            sports.add(column['Sport'])
          elif column['Medal'] == 'Silver':
            sports.add(column['Sport'])
          elif column['Medal'] == 'Bronze':
            sports.add(column['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    NOCss = list(NOCs)
    l = []
    for NOC in NOCss:      
         l.append(get_sports(athletes_by_Year_NOC, NOC, year))
    if len(l)>= 1:
        sports = l[0]
        for i in l:
            sports = sports.intersection(i)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530235821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 974, 'const': 928, 'code+const': 1902}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        infor = {}
        for j in range(len(data[i])):
            infor[data[0][j]] = data[i][j]
        if data[i][9] in athletes_by_Year_NOC:
            if  data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = [infor]
            else :
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(infor)
        else:
            athletes_by_Year_NOC[data[i][9]]={data[i][7]:[infor]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
      de = athletes_by_Year_NOC[year]
      for e in de:
          medal = [0,0,0]
          for j in range(len(de[e])):
              if de[e][j]['Medal'] == 'Gold':
                  medal[0] += 1
              if de[e][j]['Medal'] == 'Silver':
                  medal[1] += 1
              if de[e][j]['Medal'] == 'Bronze':
                  medal[2] += 1
          medals[e] = tuple(medal)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    out = []
    for e in medals:
        out.append([-medals[e][0],-medals[e][1],-medals[e][2],e])
    out.sort() 
    for i in range(len(out)):
      topfive.append((out[i][-1],-out[i][0],-out[i][1],-out[i][2]))
    s = topfive[0:5]
    for w in range(5,len(topfive)):
        if topfive[w][1:] == s[-1][1:]:
            s.append(topfive[w])
        else:
            break
    topfive = s
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC: 
      if NOC in athletes_by_Year_NOC[str(i)]:
        co = get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC]
        a = (str(i),)  
        trend.append(a+co)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      co = athletes_by_Year_NOC[year][NOC]
      for i in range(len(co)):
        if co[i]['Medal'] != 'NA':
          sports.add(co[i]['Sport']) 
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sp = []
  for w in NOCs:
    p = get_sports(athletes_by_Year_NOC, w, year)
    sp.append(p)
  sports = sp[0]
  for e in sp:
    sports = sports.intersection(e)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530236421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1398, 'const': 969, 'code+const': 2367}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    head = {}
    infor = []
    for i in range(1,len(data)) :
        for j in range(15) :
            head[data[0][j]] = data[i][j]
        infor.append(head)
        head = {}
    for i in range(len(infor)) :
        year = infor[i]['Year']
        if year not in athletes_by_Year_NOC :
            athletes_by_Year_NOC[year] = {}
            NOC = infor[i]['NOC']
            if NOC not in athletes_by_Year_NOC[year] :
                athletes_by_Year_NOC[year][NOC] = [infor[i]]
            else :
                athletes_by_Year_NOC[year][NOC].append(infor[i])  
        else :
            NOC = infor[i]['NOC']
            if NOC not in athletes_by_Year_NOC[year] :
                athletes_by_Year_NOC[year][NOC] = [infor[i]]
            else :
                athletes_by_Year_NOC[year][NOC].append(infor[i])                         
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC :
        infor = athletes_by_Year_NOC[year]
        Gold = 0 ; Silver = 0 ; Bronze = 0
        for i in infor :
            medals[i] = 0
            for j in range (len(infor[i])) :
                if infor[i][j]['Medal'] == 'Gold' :
                    Gold += 1
                elif infor[i][j]['Medal'] == 'Silver' :
                    Silver += 1
                elif infor[i][j]['Medal'] == 'Bronze' :
                    Bronze += 1
            medals[i] = (Gold,Silver,Bronze)
            Gold = 0 ; Silver = 0 ; Bronze = 0
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    data = []
    for j in medals :
        data.append([medals[j][0],medals[j][1],medals[j][2],j])
    for i in range(len(data)) :
        data[i][0] *= -1
        data[i][1] *= -1
        data[i][2] *= -1
    data.sort()
    for i in range(len(data)) :
        data[i][0] *= -1
        data[i][1] *= -1
        data[i][2] *= -1
    if len(data) >= 5 :
        for i in (range(5)) :
            topfive.append((data[i][-1],data[i][0],data[i][1],data[i][2]))
        for j in range(5,len(data)) :
            if data[j][0] == topfive[-1][1] and data[j][1] == topfive[-1][2] and data[j][2] == topfive[-1][3]:
                topfive.append((data[j][-1],data[j][0],data[j][1],data[j][2]))
            else :
                break
    else :
        for i in range (len(data)) :
            topfive.append((data[i][-1],data[i][0],data[i][1],data[i][2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    n = start
    while n <= end :
        if str(n) in athletes_by_Year_NOC :
            if NOC in athletes_by_Year_NOC[str(n)] :
                out = get_medals_by_team(athletes_by_Year_NOC,str(n))
                out = out[NOC]
                out = (str(n),) + out
                trend.append(out)
                n += 1
            else :
                n += 1
        else :
            n += 1
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            data = athletes_by_Year_NOC[year][NOC]
            for i in range(len(data)) :
                if data[i]['Medal'] != 'NA' :
                    sport = data[i]['Sport']
                    sports.add(sport)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    check = []
    if year in athletes_by_Year_NOC :
        for i in NOCs :
            if i in athletes_by_Year_NOC[year] :
                data = get_sports(athletes_by_Year_NOC,i,year) 
                check.append(data)
        if check != [] :
            if len(check) != 1 :
                sports = check[0]
                for i in range(1,len(check)) :
                    sports = sports.intersection(check[i])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530237021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 830, 'const': 989, 'code+const': 1819}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for j in range(1,len(data)):
        d = {}
        for i in range(15):
            d[data[0][i]] = data[j][i]
        if d['Year'] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[d['Year']] = {d['NOC']:[d]}
        else:
            if d['NOC'] in athletes_by_Year_NOC[d['Year']]:
                athletes_by_Year_NOC[d['Year']][d['NOC']].append(d)
            else:
                athletes_by_Year_NOC[d['Year']][d['NOC']] = [d]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        dnew = athletes_by_Year_NOC[year]
        for noc in dnew:
            g = 0
            s = 0
            b = 0
            for e in dnew[noc]:
                if e['Medal'] == 'Gold':
                    g += 1
                elif e['Medal'] == 'Silver':
                    s += 1
                elif e['Medal'] == 'Bronze':
                    b += 1
                medals[noc] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    l = []
    for n in medals:
        g,s,b = medals[n]
        l.append([-g,-s,-b,n])
    l.sort()
    topfive = [(n,-g,-s,-b) for g,s,b,n in l[0:5]] + [(n,-g,-s,-b) for g,s,b,n in l[5:] if [g,s,b] == l[4][0:3]]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        yearStr = str(year)
        if yearStr in athletes_by_Year_NOC:
          allMedals = get_medals_by_team(athletes_by_Year_NOC, yearStr)
          if NOC in allMedals :
            medals = allMedals[NOC]
            trend.append((yearStr, medals[0], medals[1], medals[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for person in athletes_by_Year_NOC[year][NOC]:
        if person['Medal'] != 'NA':
          sports.add(person['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  first = True
  for noc in NOCs:
    if first:
      sports = get_sports(athletes_by_Year_NOC, noc, year)
      first = False
    else:
      sports = sports.intersection(get_sports(athletes_by_Year_NOC, noc, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530242121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1390, 'const': 1113, 'code+const': 2503}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  topic=data[0]
  info1=[]
  for i in range(1,len(data)):
    info={}
    for k in range(15):
       info[topic[k]]=data[i][k]
    info1.append(info)
  for him in info1:
    if him['Year'] not in athletes_by_Year_NOC:
      a={}
      a[him['NOC']]=[him]
      athletes_by_Year_NOC[him['Year']]=a
    else:
      if him['NOC'] not in athletes_by_Year_NOC[him['Year']]:
        athletes_by_Year_NOC[him['Year']][him['NOC']]=[him]
      else:
        ((athletes_by_Year_NOC[him['Year']])[him['NOC']]).append(him)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    newdict=athletes_by_Year_NOC[year]
    for i in newdict:
      count=[0,0,0]
      for j in newdict[i]:
        if j['Medal']=='Gold':
          count[0]+=1
        elif j['Medal']=='Silver':
          count[1]+=1
        elif j['Medal']=='Bronze':
          count[2]+=1
      tuplee=(count[0],count[1],count[2])        
      medals[i]=tuplee
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  info=[]
  newinfo=[]
  if len(medals)>0:
    for i,v in medals.items():
      a=[]
      a.append(v)
      a.append(i)
      info.append(a)
    pro=sorted(info)
    for a in range(-1,-6,-1):
      NOC=pro[a][1]
      gold=pro[a][0][0]
      sli=pro[a][0][1]
      bro=pro[a][0][2]
      tup=(NOC,gold,sli,bro)
      newinfo.append(tup)
    more=-6
    if len(pro)>5:
      while (pro[more][0][0],pro[more][0][1],pro[more][0][2])==(tup[1],tup[2],tup[3]):
        newtup=(pro[more][1],pro[more][0][0],pro[more][0][1],pro[more][0][2])
        newinfo.append(newtup)
        more-=1
    sortt=[]
    for na in range(1,len(newinfo)):
      go1=newinfo[na][1] ; go2=newinfo[na-1][1]
      si1=newinfo[na][2] ; si2=newinfo[na-1][2]
      bo1=newinfo[na][3] ; bo2=newinfo[na-1][3]
      sortt.append(newinfo[na-1])
      if go1!=go2 or si1!=si2 or bo1!=bo2 :
        kk=sorted(sortt)
        for h in kk:
          topfive.append(h)
        sortt=[]
    sortt.append(newinfo[na])
    kk=sorted(sortt)
    for ww in kk:
      topfive.append(ww)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC: 
      n_medals=get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in n_medals:
        new=n_medals[NOC]
        tuplee=(str(i),new[0],new[1],new[2])
        trend.append(tuplee)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      new=athletes_by_Year_NOC[year][NOC]
      for i in new:
        if i['Medal']!='NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  lst=[]
  for ry in NOCs:
    crow=get_sports(athletes_by_Year_NOC,ry, year)
    lst.append(crow)
  c=lst[0]
  for ren in range(len(lst)):
    D=c&lst[ren]
    c=D
  for fox in D:
    sports.add(fox)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530243821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 864, 'const': 812, 'code+const': 1676}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        a = {}
        for j in range(len(data[0])):
            a[data[0][j]] = data[i][j]
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[a]}
        else:
            if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = [a]
            else:
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(a)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for e in athletes_by_Year_NOC[year]:
        g = 0
        s = 0
        b = 0
        for i in athletes_by_Year_NOC[year][e]:
            if i['Medal'] == 'Gold':
                g+=1
            if i['Medal'] == 'Silver':
                s+=1
            if i['Medal'] == 'Bronze':
                b+=1
        medals[e] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    a = []
    b = []
    for e in medals:
        x,y,z = medals[e]
        a.append([-x,-y,-z,e])
    a.sort()
    for e in a:
        q,w,r,t = e
        b.append((t,-q,-w,-r))
    topfive = b[:5]
    for i in range(5,len(b)):
        if topfive[-1][1:] == b[i][1:]:
            topfive.append(b[i])
        else:break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(i)]:
                x = (str(i),)
                x += get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
                trend.append(x)     
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    a = []
    for NOC in NOCs:
        a.append(get_sports(athletes_by_Year_NOC, NOC, year))
    for i in range(1,len(a)):
        b = a[0]
        sports = b.intersection(a[i])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530244421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1388, 'const': 1150, 'code+const': 2538}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    d = data[0]
    for i in range(1,len(data)):
        y = data[i][9]
        put = {}
        for k in range(len(data[i])):
            put[d[k]] = data[i][k]
        if y in athletes_by_Year_NOC:
            if data[i][7] in athletes_by_Year_NOC[y]:
                athletes_by_Year_NOC[y][data[i][7]].append(put)
            else:
                athletes_by_Year_NOC[y][data[i][7]] = []
                athletes_by_Year_NOC[y][data[i][7]].append(put)       
        else:
            athletes_by_Year_NOC[y] = {data[i][7]:[]}
            athletes_by_Year_NOC[y][data[i][7]].append(put)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    cy = athletes_by_Year_NOC[year]
    for e in cy:
        if e in medals:
            med = cy[e]['medal']
            if med == 'Gold':
                medals[e][0] += 1
            elif med == 'Silver':
                medals[e][1] += 1
            elif med == 'Bronze':
                medals[e][2] += 1
        else:
            medals[e] = [0,0,0]
            med = cy[e]
            for i in range(len(med)):
                med = cy[e][i]['Medal']
                if med == 'Gold':
                    medals[e][0] += 1
                elif med == 'Silver':
                    medals[e][1] += 1
                elif med == 'Bronze':
                    medals[e][2] += 1
    for n in medals:
        c = medals[n]
        medals[n] = tuple(c)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    topfive1 = []
    com = []
    for e in medals:
        l = []
        c = medals[e] 
        for k in c:
            l.append(-k)
        l.append(e)
        com.append(l)
    com = sorted(com)
    if len(com) > 5:
        j = 0
        for i in range(len(com)):
            if j < 5:
                p = [com[i][-1]]
                for k in range(3):
                    p.append(com[i][k])
                topfive1.append(p)
            else:
                break
            j += 1
        for i in range(5,len(com)):
            if com[i][:-1] == topfive1[4][1:]:
                p = [com[i][-1]]
                for k in range(3):
                    p.append(com[i][k])
                topfive1.append(p)
            else:
                break
    else:
        for i in range(len(com)):
            p = [com[i][-1]]
            for k in range(3):
                p.append(com[i][k])
            topfive1.append(p)
    for n, p1, p2, p3 in topfive1:
        p1 = abs(p1)
        p2 = abs(p2)
        p3 = abs(p3)
        topfive.append(tuple([n, p1, p2, p3]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        put = [str(i)]
        if str(i) in athletes_by_Year_NOC:
            d = get_medals_by_team(athletes_by_Year_NOC, str(i))
            if NOC in d:
                x = d[NOC]
                for e in x:
                    put.append(e)
                trend.append(tuple(put))
            else:
                pass
        else:
            pass
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        y = athletes_by_Year_NOC[year]
        if NOC in y:
            result = athletes_by_Year_NOC[year][NOC]
            for e in result:
                if e['Medal'] == 'Gold' or e['Medal'] == 'Silver' or e['Medal'] == 'Bronze':
                    sports.add(e['Sport'])
        else:
            pass
    else:
        pass
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    com = []
    for e in NOCs:
        medalsport = get_sports(athletes_by_Year_NOC, e, year)
        com.append(medalsport)
    sports = com[0]
    for i in range(1,len(com)):
        sports = sports & com[i]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530246721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 758, 'const': 726, 'code+const': 1484}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    #Create an empty dictionary to store the athletes by year and NOC
    athletes_by_year_noc = {}
    # Loop through each participants
    for e in data[1:]:
        # Create a dictionary for the current athlete
        athlete = {data[0][i]: e[i] for i in range(15)}
        #Add athlete to the list by year and noc
        year = athlete['Year']
        noc = athlete['NOC']
        if year not in athletes_by_year_noc: #if that year isn't a key in the dict yet
            athletes_by_year_noc[year] = {} #then assign key as 'year' and value as '{}' ex: {year: {}}
        if noc not in athletes_by_year_noc[year]: #if that year doesn't have this noc yet.
            athletes_by_year_noc[year][noc] = [] #create an empty list for it ex: {year: {noc: []}}
        athletes_by_year_noc[year][noc].append(athlete) #it will already has a spot, just append 
    return athletes_by_year_noc
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    #create a dict by year, noc
    if year not in athletes_by_Year_NOC:
        return {}
    noc_in_year = athletes_by_Year_NOC[year] #{'FIN':[...] , 'DMK':[...]}
    for noc in noc_in_year:
        count = {'Gold':0, 'Silver':0, 'Bronze':0}
        for athlete in noc_in_year[noc]:
            if athlete['Medal'] in count:
                count[athlete['Medal']] += 1
        count_tuple = tuple(count[e] for e in count)
        medals[noc] = count_tuple
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medals_r = {}
    for noc, medal in medals.items():
        if medal not in medals_r:
            medals_r[medal] = set()
        medals_r[medal].add(noc)
    sort_medals_r = sorted(medals_r)[::-1] #sorted list of key of medals_r (medals)
    for t in sort_medals_r[:5]:
        if len(topfive) < 5:
            for noc in sorted(medals_r[t]): #Make sure that it will be alphabetically sorted
                topfive.append((noc,) + t)
        else:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    start = start + start%2
    end = end - end%2
    for year in range(start,end+2,2):
        d = get_medals_by_team(athletes_by_Year_NOC,str(year)).get(NOC)
        # d = (3,2,1) (medals earned by NOC in that year)
        if d is not None:
            out = (str(year),) + d #out = ('2002', 3, 2, 1)
            trend.append(out)
        else:
            pass
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    #1.Check if Noc, year is valid 
    if year not in athletes_by_Year_NOC:
        return set()
    if NOC not in athletes_by_Year_NOC[year]:
        return set()
    #2.Start organising 
    for a in athletes_by_Year_NOC[year][NOC]:
        if a['Medal'] != 'NA':
            sports.add(a['Sport'])
    #3.Return the result 
    return sports #set of sports that 'NOC' earned medals in that 'year'
    #{'Boxing', 'Weightlifting'}
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    d = {} #dict # {'THA' : {'Boxing', 'Weightlifting'}, 'VIE':{'Weight'} }
    for country in NOCs:
        d[country] = get_sports(athletes_by_Year_NOC, country,year)
    out = set.intersection(*d.values())
    return out
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530249621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1328, 'const': 1263, 'code+const': 2591}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    dtt = set()
    inf = []
    for l in data[1::]:
        d={}
        for i in range(len(data[0])):
            d[data[0][i]] = l[i]
        inf.append(d)
    yy = set()
    for e in inf:
        yy.add(e['Year'])
    for y in yy:
        noc = {}
        for u in inf:
            if u['NOC'] not in noc and u['Year'] == y:
                noc[u['NOC']] = [u]
            elif u['NOC'] in noc and u['Year'] == y:
                noc[u['NOC']].append(u)
        athletes_by_Year_NOC[y] = noc
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        A = athletes_by_Year_NOC[year]
        for e in A:
            b = A[e]
            med = [0,0,0]
            for d in b:
                if d['Medal'] == 'Gold':
                    med[0] +=1
                elif d['Medal'] == 'Silver':
                    med[1] +=1
                elif d['Medal'] == 'Bronze':
                    med[2] +=1
            medd = (med[0],med[1],med[2])
            medals[e] = medd
    else:
        medals = {}
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    pc = []
    for e in medals:
        ps=[]
        ps.append(int(medals[e][0]))
        ps.append(int(medals[e][1]))
        ps.append(int(medals[e][2]))
        ps.append(e)
        pc.append(ps)
    pd = sorted(pc)
    pd = pd[::-1]
    n=0
    mem = 'ming'
    for e in pd:
        if n<5 :
            g = (e[3],e[0],e[1],e[2])
            topfive.append(g)
            n+=1
            mem = e
        else:
            if mem[:3:] == e[:3:]:
                g = (e[3],e[0],e[1],e[2])
                topfive.append(g)
                n+=1
                mem = e
            else:
                break
    dik = {}
    for e in topfive:
        dik[e[0]] = e[1::]
    kakarott = 0
    for i in range(len(topfive)-1):
        while kakarott != 0:
            continue
        if topfive[i][1::] != topfive[i+1][1::]:
            pass
        else:
            n = i
            while True:
                if n != len(topfive)-1:
                    if topfive[n][1::] == topfive[n+1][1::]:
                        n+=1
                    else:
                        break
                else:
                    break
            po = topfive[i:n+1:]
            po.sort()
            pa = topfive[:i:]+po+topfive[n+1::]
            kakakott = n-i
            topfive = pa
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(2000,2017,2):
        a = get_medals_by_team(athletes_by_Year_NOC, str(y))
        if start <= y <= end and NOC in a:
            trend.append((str(y),)+a[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if 2000 <=int(year)<=2016:
        if NOC in athletes_by_Year_NOC[year]:
            a = athletes_by_Year_NOC[year][NOC]
            for e in a:
                if e['Medal'] in ['Gold','Silver','Bronze']:
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    a=[]
    b='kim'
    for NOC in NOCs:
        a.append(get_sports(athletes_by_Year_NOC, NOC, year))
    b = a[0]
    for i in range(0,len(a)-1):
        b = b&a[i]&a[i+1]
    sports = sports.union(b)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530255321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 946, 'const': 1035, 'code+const': 1981}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}   
  for i in range(1,len(data)):
    year = data[i][9]
    NOC = data[i][7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    d = {}
    for j in range(len(data[0])):
      d[data[0][j]] = data[i][j]
    athletes_by_Year_NOC[year][NOC].append(d)    
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC: #มีไว้กันyear ไม่อยู่ในdict ของ def 4 ซูกัสเด็ก50 คนจีน100% 
    y = athletes_by_Year_NOC[year]
    for i in y:
      if i not in medals:
        (g,s,b) = (0,0,0)
        NOC = y[i]
        for j in range(len(NOC)):
          if NOC[j]["NOC"] == i:
            if NOC[j]["Medal"] == "Gold":
              g +=1
            elif NOC[j]["Medal"] == "Silver":
              s+=1
            elif NOC[j]["Medal"] == "Bronze":
              b+=1
            elif NOC[j]["Medal"] == "NA":
              g = g
        medals[i] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l = []
  for i in medals:
    l.append([-medals[i][0],-medals[i][1],-medals[i][2],i])
  a = sorted(l)[:5]
  for j in sorted(l)[5:]:
    if j[:3]==a[4][:3]:
      a.append(j)
  b = []
  for i in range(len(a)):
    b.append((a[i][3] , -a[i][0],-a[i][1],-a[i][2]))
  topfive = b
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  start = int(start)
  end = int(end)
  for i in range(start, end+1):
    if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)):
      a,b,c = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
      trend.append((str(i),a,b,c))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    d = athletes_by_Year_NOC[year]
    if NOC in d:
      l = d[NOC]
      for i in l:
        if i["Sport"] not in sports and i["Medal"] != "NA":
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  l = []
  for i in NOCs:
    l.append(get_sports(athletes_by_Year_NOC, i, year))
  sports = l[0].intersection(l[1])
  for j in range(1,len(l)):
    sports = sports.intersection(l[j])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530256021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 894, 'const': 1077, 'code+const': 1971}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for row in data[1:]:
    year, noc = row[9], row[7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = dict()
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    athlete = dict()
    for i in range(len(data[0])):
      athlete[data[0][i]] = row[i]
    athletes_by_Year_NOC[year][noc].append(athlete)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return medals
  athletes = athletes_by_Year_NOC[year]
  for noc in athletes:
    gold = 0
    silver = 0
    bronze = 0
    for athlete in athletes[noc]:
      medal = athlete['Medal']
      if medal == 'Gold':
        gold += 1
      elif medal == 'Silver':
        silver += 1
      elif medal == 'Bronze':
        bronze += 1
    medals[noc] = (gold, silver, bronze) 
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals_sorted = []
  for key, value in medals.items():
    medals_sorted.append((-value[0], -value[1], -value[2], key))
  medals_sorted.sort()
  amount = 5
  while amount < len(medals_sorted) and medals_sorted[amount - 1][:3] == medals_sorted[amount][:3]:
    amount += 1
  for i in range(amount):
    topfive.append((medals_sorted[i][3], -medals_sorted[i][0], -medals_sorted[i][1], -medals_sorted[i][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end + 1):
    year = str(year)
    if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
      continue
    gold = 0
    silver = 0
    bronze = 0
    for athlete in athletes_by_Year_NOC[year][NOC]:
      medal = athlete['Medal']
      if medal == 'Gold':
        gold += 1
      elif medal == 'Silver':
        silver += 1
      elif medal == 'Bronze':
        bronze += 1
    trend.append((year, gold, silver, bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    athletes = athletes_by_Year_NOC[year][NOC]
    for athlete in athletes:
      if athlete['Medal'] !='NA':
        sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
  for noc in NOCs:
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, noc, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้นd = convert_to_dict(data)

6530257621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 994, 'const': 1081, 'code+const': 2075}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  a = {}
  for i in range(1,len(data)):
    for j in range(len(data[0])):
      a[data[0][j]] = data[i][j]
    y = a["Year"]
    N = a["NOC"]
    if y in athletes_by_Year_NOC:
      if N in athletes_by_Year_NOC[y]:
        athletes_by_Year_NOC[y][N].append(a)
      else:
        athletes_by_Year_NOC[y][N] = [a]
    else:
      athletes_by_Year_NOC[y] = {N : [a]}
    a = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for i in athletes_by_Year_NOC[year]:
      h = [0]*3
      for p in athletes_by_Year_NOC[year][i]:
        if p["Medal"] == "Gold":
          h[0] += 1
        if p["Medal"] == "Silver":
          h[1] += 1
        if p["Medal"] == "Bronze":
          h[2] += 1
      medals[i] = tuple(h)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  rearr = []
  for x,y in medals.items():
    y = [-e for e in y]
    rearr.append([y,x])
  rearr.sort()
  for y,x in rearr:
    y = [-e for e in y]
    if len(topfive) < 5:
      topfive.append((x,y[0],y[1],y[2]))
    elif y == [e for e in topfive[-1][1:]]:
      topfive.append((x,y[0],y[1],y[2]))
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
    if str(i) in athletes_by_Year_NOC:
      year = str(i)
      pretrend = [year]
      if NOC in athletes_by_Year_NOC[year]:
        allNOC = get_medals_by_team(athletes_by_Year_NOC, year)
        medals = list(allNOC[NOC])
        for e in medals:
          pretrend.append(e)
        trend.append(tuple(pretrend))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for p in athletes_by_Year_NOC[year][NOC]:
        if p["Medal"] == "Gold" or p["Medal"] == "Silver" or p["Medal"] == "Bronze":
          sports.add(p["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCs = list(NOCs)
  sports.update(get_sports(athletes_by_Year_NOC, NOCs[0], year))
  for i in range(len(NOCs)-1):
    NOC = NOCs[i+1]
    if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
        checksports = get_sports(athletes_by_Year_NOC, NOC, year)
        sports.intersection_update(checksports)
      else:
        return set()
    else:
      return set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530258221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 830, 'const': 892, 'code+const': 1722}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    headers = data[0]
    for line in data[1:]:
        year = line[9]
        NOC = line[7]
        info = {}
        for i in range(len(headers)):
            info[headers[i]] = line[i]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if NOC not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][NOC] = []
        athletes_by_Year_NOC[year][NOC].append(info)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for NOC,list_info in athletes_by_Year_NOC[year].items():
            if NOC not in medals:
                medals[NOC] = [0,0,0]
            for info in list_info:
                if info['Medal']=='Gold': medals[NOC][0]+=1
                elif info['Medal']=='Silver': medals[NOC][1]+=1
                elif info['Medal']=='Bronze': medals[NOC][2]+=1
        for NOC,list in medals.items():
            medals[NOC] = tuple(list)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    x = []
    for NOC, list_medal in medals.items():
        gold,silver,bronze = list_medal
        x.append((-gold,-silver,-bronze, NOC))
    x.sort()
    y = x[:5]
    y += [e for e in x[5:] if e[:3]==y[4][:3]]
    for gold,silver,bronze, NOC in y:
        topfive.append((NOC,-gold,-silver,-bronze))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1):
        year = str(year)
        if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
            gold,silver,bronze = get_medals_by_team(athletes_by_Year_NOC, year)[NOC]
            trend.append((year,gold,silver,bronze))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        list_info  = athletes_by_Year_NOC[year][NOC]
        for info in list_info:
            if info['Medal']!='NA':
                sports.add(info['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    tuple_NOC = tuple(NOCs)
    sports = get_sports(athletes_by_Year_NOC, tuple_NOC[0], year)
    for NOC in tuple_NOC:
        sports = sports & get_sports(athletes_by_Year_NOC, NOC, year)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530260421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1078, 'const': 937, 'code+const': 2015}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  n = len(data)
  for i in range(1,n):
    dd = {}
    for e in range(len(data[i])):
      dd[data[0][e]]=data[i][e]
    if dd['Year'] in athletes_by_Year_NOC:
      if dd['NOC'] in athletes_by_Year_NOC[dd['Year']]:
        athletes_by_Year_NOC[dd['Year']][dd['NOC']].append(dd)
      else:
        athletes_by_Year_NOC[dd['Year']][dd['NOC']]=[dd]
    else:
      athletes_by_Year_NOC[dd['Year']]={}
      if dd['NOC'] in athletes_by_Year_NOC[dd['Year']]:
        athletes_by_Year_NOC[dd['Year']][dd['NOC']].append(dd)
      else:
        athletes_by_Year_NOC[dd['Year']][dd['NOC']] = [dd]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  x = athletes_by_Year_NOC[year]
  for k in x:
    g = 0
    s = 0
    b = 0
    for i in range(len(x[k])):
      if x[k][i]['Medal']=='Gold':
        g+=1
      elif x[k][i]['Medal']=='Silver':
        s+=1
      elif x[k][i]['Medal']=='Bronze':
        b+=1
    medals[k]=(g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  x = []
  for Noc in medals:
    x.append([medals[Noc][0],medals[Noc][1],medals[Noc][2],Noc])
  x.sort()
  n = 0
  b = x[0]
  k = 1
  for e in x[::-1]:
    n+=1
    if n<=5:
      if e[:-1]!=b[:-1] or n==1:
        topfive.append((e[-1],e[0],e[1],e[2]))
        b = e
        k=1
      else:
        topfive.insert(-k,(e[-1],e[0],e[1],e[2]))
        k+=1
    elif e[:-1]==b[:-1]:
      topfive.insert(-k,(e[-1],e[0],e[1],e[2]))
      k+=1
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in get_medals_by_team(athletes_by_Year_NOC,str(i)):
        trend.append((str(i), get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC][0],get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC][1],get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
        if e['Medal']!='NA':
          sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  NOCs=[s for s in NOCs]
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  for e in NOCs:
    sports = sports & get_sports(athletes_by_Year_NOC, e, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530261021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1422, 'const': 2092, 'code+const': 3514}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    innermost = {}
    inner1 = []
    for e in data[1:]:
        innermost['ID'] = e[0]
        innermost['Name'] = e[1]
        innermost['Sex'] = e[2]
        innermost['Age'] = e[3]  
        innermost['Height'] = e[4]
        innermost['Weight'] = e[5]  
        innermost['Team'] = e[6]
        innermost['NOC'] = e[7]
        innermost['Games'] = e[8]
        innermost['Year'] = e[9]
        innermost['Season'] = e[10]
        innermost['City'] = e[11]
        innermost['Sport'] = e[12]
        innermost['Event'] = e[13]
        innermost['Medal'] = e[14]
        inner1.append(innermost)
        innermost = {}
    dt = inner1
    inner = dict()
    athletes_by_Year_NOC = {}
    for e in dt:
        if e['Year'] in inner:
            inner[e['Year']] += [e]
        else:
            inner[e['Year']] = [e]
    outer = dict()
    for k, v in inner.items():
        for d in v:
            if d['NOC'] in outer:
                outer[d['NOC']] += [d]
            else:
                outer[d['NOC']] = [d]
        athletes_by_Year_NOC[k] = outer
        outer = {}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    md = ()
    gold = silver = bronze = 0
    if year not in athletes_by_Year_NOC:
        return dict()
    for noc,lod in athletes_by_Year_NOC[year].items():
        for v in lod:
            if v['Medal'] == 'Gold':
                gold += 1
            elif v['Medal'] == 'Silver':
                silver += 1
            elif v['Medal'] == 'Bronze':
                bronze += 1
        md = (gold,silver,bronze)
        medals[noc] = md
        gold = silver = bronze = 0
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    pc = []
    for k, v in medals.items():
        pc.append((v[0],v[1],v[2],k))
    p = sorted(pc)[::-1]
    tf = p[:5]
    for i in range(5,len(p)):
        if p[i][0:3] == tf[-1][0:3]:
            tf.append(p[i])
    tf.append(tf[0])
    compare = []
    cp = []
    for i in range(1,len(tf)):
        if tf[i-1][0:3] == tf[i][0:3]:
            compare.append(tf[i-1])
        else:
            if len(compare) != 0:
                compare.append(tf[i-1])
                for e in compare:
                    j = (e[3],e[0],e[1],e[2])
                    cp.append(j)
                cp.sort()
                for e in cp:
                    topfive.append(e)
                compare = []
                cp = []
            else:
                topfive.append((tf[i-1][-1],tf[i-1][0],tf[i-1][1],tf[i-1][2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    if start % 2 != 0:
        st = start + 1
    else:
        st = start
    if end % 2 != 0:
        ed = end - 1
    else:
        ed = end
    for n in range(st,ed+1):
        if NOC in get_medals_by_team(athletes_by_Year_NOC, str(n)):
            t = get_medals_by_team(athletes_by_Year_NOC, str(n))[NOC]
            trend.append((str(n),t[0],t[1],t[2]))
        else:
            pass
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC:
        return set()
    if NOC in get_medals_by_team(athletes_by_Year_NOC, year):
        for vl in athletes_by_Year_NOC[year][NOC]:
            if vl['Medal'] != 'NA':
                sports.add(vl['Sport'])
    else:
        return set()
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    total = []
    if year not in athletes_by_Year_NOC:
        return set()
    for e in NOCs:
        if e in get_medals_by_team(athletes_by_Year_NOC, year):
            get = get_sports(athletes_by_Year_NOC, e, year)
            total.append(get)
        else:
            return set()
    sports = total[0]
    for e in total[1:]:
        sports = sports.intersection(e)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530264021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 782, 'const': 897, 'code+const': 1679}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    f = data[0]
    for e in data[1:]:
        dt = {}
        for i in range(len(f)):
            dt[f[i]] = e[i]
        noc = dt["NOC"]
        year = dt["Year"]
        if year in athletes_by_Year_NOC:
            if noc in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][noc].append(dt)
            else:
                athletes_by_Year_NOC[year][noc] = [dt]
        else:
            athletes_by_Year_NOC[year] = {noc:[dt]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        a = athletes_by_Year_NOC[year]
        for e in a:
            mc = {"Gold":0,"Silver":0,"Bronze":0}
            for f in a[e]:
                if f["Medal"] in mc:
                    mc[f["Medal"]] += 1
                medals[e] = (mc["Gold"],mc["Silver"],mc["Bronze"])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    s = []
    o = []
    for e in medals:
        a,b,c = medals[e]
        s.append([-a,-b,-c,e])
    s.sort()
    for f,g,h,t in s:
        o.append((t,-f,-g,-h))
    topfive = o[:5]
    for i in range(5,len(s)):
        if topfive[-1][1:] == o[i][1:]:
            topfive.append(o[i])
        else: break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC:
            m = get_medals_by_team(athletes_by_Year_NOC, str(i))
            if NOC in m:
                a,b,c = m[NOC]
                trend.append((str(i),a,b,c))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        a = athletes_by_Year_NOC[year][NOC]
        for e in a:
            if e["Medal"] != "NA":
                sports.add(e["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sport = []
    for NOC in NOCs:
        sport.append(get_sports(athletes_by_Year_NOC, NOC, year))
    s = sport[0]
    for e in sport:
        s = s & e
    sports = s
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530266221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1010, 'const': 1004, 'code+const': 2014}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data_collect = data[0]
  for i in range(1, len(data)) :
    f = {}
    for j in range(len(data_collect)) :
      f[data_collect[j]] = data[i][j]
    if data[i][9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[data[i][9]] = {data[i][7] : []}
    else :
      if data[i][7] not in athletes_by_Year_NOC[data[i][9]] :
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(f)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for data in athletes_by_Year_NOC[year] :
    if data not in medals :
      medals[data] = [0,0,0]
    for i in range(len(athletes_by_Year_NOC[year][data])) :
      if athletes_by_Year_NOC[year][data][i]["Medal"] == "Bronze" :
        medals[data][2] += 1
      elif athletes_by_Year_NOC[year][data][i]["Medal"] == "Silver" :
        medals[data][1] += 1
      elif athletes_by_Year_NOC[year][data][i]["Medal"] == "Gold" :
        medals[data][0] += 1
    medals[data] = tuple(medals[data])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  new_d = []
  f = set()
  for k,v in medals.items() :
    if v not in f :
      new_d.append([v, [k]])
      f.add(v)
    else :
      for i in range(len(new_d)) :
        if new_d[i][0] == v :
          new_d[i][1].append(k)
  new_d.sort(reverse = True)
  n = 5
  for i in range(len(new_d)) :
    new_d[i][1].sort()
    for e in new_d[i][1] :
      topfive.append((e, new_d[i][0][0], new_d[i][0][1], new_d[i][0][2]))
      n -= 1
    if n <= 0: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end + 1) :
    if str(i) in athletes_by_Year_NOC :
      for e in get_medals_by_team(athletes_by_Year_NOC, str(i)) :
        if e == NOC :
          g,s,b = get_medals_by_team(athletes_by_Year_NOC, str(i))[e]
          trend.append((str(i), g, s, b))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for e in athletes_by_Year_NOC[year][NOC] :
        if e["Medal"] != "NA" :
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  i = True
  for NOC in NOCs :
    if i :
      sports = get_sports(athletes_by_Year_NOC, NOC, year)
      i = False
    sports &= get_sports(athletes_by_Year_NOC, NOC, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530274221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 826, 'const': 972, 'code+const': 1798}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    NOC=data[i][7]
    year=data[i][9]
    dict_data = {}
    for j in range(15):
      dict_data[data[0][j]] = data[i][j]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {NOC:[]}
    elif NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    athletes_by_Year_NOC[year][NOC].append(dict_data)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for NOC in athletes_by_Year_NOC[year]:
      gold=0
      silver=0
      bronze=0
      for dict_data in athletes_by_Year_NOC[year][NOC]:
        if dict_data['Medal'] == "Gold":
          gold += 1
        elif dict_data['Medal'] == "Silver":
          silver += 1
        elif dict_data['Medal'] == "Bronze":
          bronze += 1
      medals[NOC] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sorted_medal = []
  for NOC,medal in medals.items():
    sorted_medal.append((-medal[0],-medal[1],-medal[2],NOC))
  sorted_medal.sort()
  for i in range(len(sorted_medal)):
    if i >= 5 and (topfive[4][1] != -sorted_medal[i][0] or topfive[4][2] != -sorted_medal[i][1] or topfive[4][3] != -sorted_medal[i][2]):
      break
    topfive.append((sorted_medal[i][3],-sorted_medal[i][0],-sorted_medal[i][1],-sorted_medal[i][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start,end+1):
    year = str(y)
    medals = get_medals_by_team(athletes_by_Year_NOC,year)
    if NOC in medals:
      trend.append((year,medals[NOC][0],medals[NOC][1],medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for dict_data in athletes_by_Year_NOC[year][NOC]:
        if dict_data['Medal'] != 'NA':
          sports.add(dict_data['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  has_country = False
  for NOC in NOCs:
    noc_sports = get_sports(athletes_by_Year_NOC,NOC,year)
    if has_country == False:
      sports = noc_sports
      has_country = True
    sports &= noc_sports
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530276521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1408, 'const': 1721, 'code+const': 3129}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {} 
  list=[]
  dlist = []
  noc = {}
  year = {}
  fi = {}
  for a in data[1:]:
          rr = {'ID':a[0], 'Name': a[1], 'Sex': a[2], 'Age': a[3], 'Height': a[4]                 , 'Weight': a[5], 'Team': a[6] , 'NOC': a[7], 'Games': a[8] , 'Year': a[9]                 , 'Season': a[10], 'City': a[11], 'Sport': a[12], 'Event': a[13], 'Medal': a[14]}
          list.append(rr)
          year[rr["Year"]] = []
          fi[rr["Year"]] = {}
  for i in list:
    year[i["Year"]].append(i)
    fi[i["Year"]][i["NOC"]] = []
  for e in year:
    for r in year[e]:
      fi[e][r["NOC"]].append(r)
  athletes_by_Year_NOC = fi
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  no = {}
  year = str(year)
  for i in athletes_by_Year_NOC[year]:
    no[i] = [0,0,0]
    pe =0
    for e in athletes_by_Year_NOC[year][i]:
      if e["Medal"] == "Gold":
        no[i][0] += 1
      elif e["Medal"] == "Silver":
        no[i][1] += 1
      elif e["Medal"] == "Bronze":
        no[i][2] += 1
      pe += 1
    medals[i] = (no[i][0],no[i][1],no[i][2])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  list = []
  for i in medals:
    list.append([medals[i][0], medals[i][1], medals[i][2], i])
    list.sort()
  a = 5
  i = 6
  for qwe in list:
    if i >= len(list):
      break
    else:
     if list[-5][3] != list[-i][3]:
      if list[-5][0] == list[-i][0]:
       if list[-5][1] == list[-i][1]:
        if list[-5][2]== list[-i][2]: 
         a += 1
         i += 1
  nlist = []
  for e in range(a):
    nlist.append(list[-e-1])
  for zz in range (len(nlist)):
   for z in range (len(nlist)):
    if z == 0:
      continue
    else:
     if nlist[z-1][0] == nlist[z][0]:
       if nlist[z-1][1] == nlist[z][1]:
         if nlist[z-1][2] == nlist[z][2]:
           if nlist[z-1][3] >= nlist[z][3]:
              nlist[z-1],nlist[z] = nlist[z],nlist[z-1]
  for va in nlist:
    topfive.append((va[3],va[0],va[1],va[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
    if str(i) in athletes_by_Year_NOC:
     a = get_medals_by_team(athletes_by_Year_NOC, i)
     if NOC in a:
       num = a[NOC]
       trend.append((str(i),num[0],num[1],num[2]))
     else:
      continue
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  glist = []
  a ={}
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year]:
     a = athletes_by_Year_NOC[year][NOC]
    for i in a:
      if i["Medal"] == "Gold" or i["Medal"] == "Silver" or i["Medal"] == "Bronze":
        glist.append(i["Sport"])
    for e in glist:
      sports.add(e)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list = []
  sp = []
  for i in NOCs:
    list.append(i)
  for noc in list:
    sp.append(get_sports(athletes_by_Year_NOC, noc, year))
  s1 = sp[0]
  for st in sp:
    sq = set()
    for q in st:
      if q in s1:
        sq.add(q)
    s1 = sq
  sports = sq
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530279421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1122, 'const': 1281, 'code+const': 2403}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {} ; m = [] 
    for i in range(1,len(data)):
        m.append({data[0][k]:data[i][k] for k in range(len(data[0]))})  
    for d in m:
        year = d['Year']
        noc = d['NOC']
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(d)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {} ; c = {}
    c = athletes_by_Year_NOC[year]
    if year not in athletes_by_Year_NOC:
        return set()
    for e in c:
        medals[e] = [0,0,0]
    for e in c:
        y = c[e]
        for k in y :
            x = k["Medal"]
            if x == "Gold": medals[e][0] += 1
            elif x == "Silver" : medals[e][1] += 1
            elif x == "Bronze" : medals[e][2] += 1
    for e in c:
        medals[e] = tuple(medals[e])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    alls = []
    for e in medals:
        alls.append(list(medals[e]) + [e])
    x = sorted(alls,key = lambda x:(-x[0],-x[1],-x[2],x[3]))
    y = x[:5]
    for i in range(5,len(x)):
        if y[-1][0:3] == x[i][0:3]:
            y.append(x[i])
        else:
            break
    topfive = [tuple([x[i][-1] , x[i][0] , x[i][1] , x[i][2]]) for i in range(len(y))]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    year = [e for e in athletes_by_Year_NOC]
    year1 = [e for e in year if int(start)<= int(e) <= int(end)]
    for e in year1:
        x = get_medals_by_team(athletes_by_Year_NOC, e)
        if NOC in x :
            trend.append(tuple([e] + list(x[NOC])))
    trend = sorted(trend)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC:
        return set() 
    if NOC in athletes_by_Year_NOC[year]:
        x = athletes_by_Year_NOC[year][NOC]
    else : return set()
    for e in x:
        if e['Medal'] != 'NA':
            sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    x = []
    c = set()
    if year not in athletes_by_Year_NOC:
        return set()
    for e in NOCs:
        if e in athletes_by_Year_NOC[year]:
            x.append(get_sports(athletes_by_Year_NOC, e ,year))
        else: return set()
    c = x[0].intersection(x[1])
    for i in range(2,len(x)):
        c = c.intersection(x[i])
    sports = c
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530285121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1096, 'const': 1480, 'code+const': 2576}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        ID = data[i][0]; Name = data[i][1]; Sex = data[i][2]
        Age = data[i][3]; Height = data[i][4]; Weight = data[i][5]
        Team = data[i][6]; NOC = data[i][7]; Games = data[i][8]
        Year = data[i][9]; Season = data[i][10]; City = data[i][11]
        Sport = data[i][12]; Event = data[i][13]; Medal = data[i][14]        
        if Year in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[Year]:
                athletes_by_Year_NOC[Year][NOC] += [{'ID':ID, 'Name':Name,
                                                    'Sex':Sex, 'Age':Age,
                                                    'Height':Height, 'Weight':Weight,
                                                    'Team':Team, 'NOC':NOC, 'Games':Games,
                                                    'Year':Year, 'Season':Season,
                                                    'City':City, 'Sport':Sport,
                                                    'Event':Event, 'Medal':Medal}]
            else:
                athletes_by_Year_NOC[Year][NOC] = [{'ID':ID, 'Name':Name,
                                                    'Sex':Sex, 'Age':Age,
                                                    'Height':Height, 'Weight':Weight,
                                                    'Team':Team, 'NOC':NOC, 'Games':Games,
                                                    'Year':Year, 'Season':Season,
                                                    'City':City, 'Sport':Sport,
                                                    'Event':Event, 'Medal':Medal}]
        else:
            athletes_by_Year_NOC[Year] = {NOC:[{'ID':ID, 'Name':Name,
                                                'Sex':Sex, 'Age':Age,
                                                'Height':Height, 'Weight':Weight,
                                                'Team':Team, 'NOC':NOC, 'Games':Games,
                                                'Year':Year, 'Season':Season,
                                                'City':City, 'Sport':Sport,
                                                'Event':Event, 'Medal':Medal}]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        result = athletes_by_Year_NOC[year]
        for k in result:
            NOC = k
            list_medals = [0, 0, 0]
            for e in result[NOC]:
                if e['Medal'] == 'Gold':
                    list_medals[0] += 1
                elif e['Medal'] == 'Silver':
                    list_medals[1] += 1
                elif e['Medal'] == 'Bronze':
                    list_medals[2] += 1
            medals[NOC] = (list_medals[0], list_medals[1], list_medals[2])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    list_medals = []
    for c in medals:
        NOC = c
        Gold = medals[c][0]
        Silver = medals[c][1]
        Bronze = medals[c][2]
        list_medals.append([-Gold, -Silver, -Bronze, NOC])
    list_medals.sort()
    list_medals5 = list_medals[:5]
    for i in range(5,len(list_medals)):
        if list_medals[i][:3] == list_medals5[4][:3]:
            list_medals5.append(list_medals[i])
    for e in list_medals5:
        NOC = e[3]
        Gold = abs(e[0])
        Silver = abs(e[1])
        Bronze = abs(e[2])
        topfive.append((NOC, Gold, Silver, Bronze))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1,1):
        medals = get_medals_by_team(athletes_by_Year_NOC, str(year))
        if NOC in medals:
            trend.append((str(year),) + medals[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    list_sports = []
    for NOC in NOCs:
        list_sports.append(get_sports(athletes_by_Year_NOC, NOC, year))
    sports = list_sports[0] & list_sports[1]
    for i in range(2,len(list_sports)):
        sports = sports & list_sports[i]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530288021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 988, 'const': 972, 'code+const': 1960}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1, len(data)) :
        a = {}
        for j in range(len(data[0])):
            a[data[0][j]] = data[i][j]
        if data[i][9] in athletes_by_Year_NOC:
            if data[i][7] in athletes_by_Year_NOC[data[i][9]] :
                athletes_by_Year_NOC[data[i][9]][data[i][7]].append(a)
            else :
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = [a]
        else:
            athletes_by_Year_NOC[data[i][9]] = {data[i][7]: [a]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for e in athletes_by_Year_NOC[year] :
        c1 = 0 ; c2 = 0 ; c3 = 0
        for i in range(len(athletes_by_Year_NOC[year][e])) :
            if athletes_by_Year_NOC[year][e][i]["Medal"] == "Gold" :
                c1 += 1
            elif athletes_by_Year_NOC[year][e][i]["Medal"] == "Silver" :
                c2 += 1
            elif athletes_by_Year_NOC[year][e][i]["Medal"] == "Bronze" :
                c3 += 1
        medals[e] = (c1, c2, c3) 
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    t = []
    for e in medals :
        t.append([-medals[e][0], -medals[e][1], -medals[e][2], e])
    t.sort()
    a = []
    for k in t :
        a.append((k[3], -k[0], -k[1], -k[2]))
    for i in range(5) :
        topfive.append(a[i])
    for j in range(5, len(a)) :
        if a[j][1:] == a[4][1:] : 
            topfive.append(a[j])
        else :
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for k in athletes_by_Year_NOC :
        if start <= int(k) <= end :
            a = get_medals_by_team(athletes_by_Year_NOC, k)
            for e in a :
                if e == NOC :
                    trend.append((k, a[e][0], a[e][1], a[e][2]))
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != "NA" :
                    sports.add(e['Sport'])
    return sports
#=====================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    t = []
    for s in NOCs :
        t.append(get_sports(athletes_by_Year_NOC, s, year))
    mem = t[0]
    for i in range(len(t)-1) :
        sports = t[i].intersection(mem)
        mem = sports
    sports = sports.intersection(t[-1])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530289721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 764, 'const': 748, 'code+const': 1512}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = dict()  # {year: {noc: [ID, ....]}}
    keys = data[0]  # [ID, ...]
    for entry in data[1:]:
      year = entry[9]
      noc = entry[7]
      if year not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[year] = dict()
      if noc not in athletes_by_Year_NOC[year]:
        athletes_by_Year_NOC[year][noc] = list()
      athletes_by_Year_NOC[year][noc].append(dict(zip(keys, entry)))
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  year_info = athletes_by_Year_NOC[year] # {NOC: .....}
  for noc in year_info:
    ls_data = year_info[noc] #[{'ID':..., 'Name':...}, ...]
    g = 0; s = 0; b = 0
    for ls in ls_data:
      if ls['Medal'] == 'Gold':
        g += 1
      if ls['Medal'] == 'Silver':
        s += 1
      if ls['Medal'] == 'Bronze':
        b += 1
    medals[noc] = (g, s, b)
  return medals
#======================================
def get_top_five(medals):
    topfive = []
    top_noc = []
    rev_medals = dict()
    data = sorted(medals[noc] for noc in medals)
    topmedal = sorted(list(set(data[-5:])))[::-1]
    for noc in medals:
        if (medal := medals[noc]) not in rev_medals:
            rev_medals[medal] = []
        rev_medals[medal].append(noc)
    for rank in topmedal:
        rev_medals[rank].sort()
        top_noc += rev_medals[rank]
    topfive = [tuple([rank] + list(medals[rank])) for rank in top_noc]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    year = str(year)
    if year in athletes_by_Year_NOC:
      if NOC in get_medals_by_team(athletes_by_Year_NOC,year):
        year_medals = list(get_medals_by_team(athletes_by_Year_NOC,year).get(NOC))
        trend.append(tuple([year] + year_medals))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for sport in athletes_by_Year_NOC[year][NOC]:
        if sport['Medal'] != 'NA':
          sports.add(sport['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = get_sports(athletes_by_Year_NOC,NOCs.pop(),year)
  for noc in NOCs:
    sports &= get_sports(athletes_by_Year_NOC,noc,year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530290221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 940, 'const': 1112, 'code+const': 2052}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  ListHead = data[0]
  for d in data[1:]:
    year = d[9]
    NOC = d[7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = [{ListHead[i]:d[i] for i in range(len(ListHead))}]
    else: athletes_by_Year_NOC[year][NOC].append({ListHead[i]:d[i] for i in range(len(ListHead))})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for key,value in athletes_by_Year_NOC[year].items():
    if key not in medals: medals[key] = [0, 0, 0]
    for elem in value:
      if elem["Medal"] == "Gold":
        medals[key][0] += 1
      elif elem["Medal"] == "Silver":
        medals[key][1] += 1
      elif elem["Medal"] == "Bronze":
        medals[key][2] += 1
  for key, value in medals.items():
    medals[key] = tuple(value)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sortedMedals = [ ((-medals[e][0], -medals[e][1], -medals[e][2]), e) for e in medals.keys()]
  sortedMedals.sort()
  ans = sortedMedals[:5]
  for i in range(5, len(sortedMedals)):
    if (ans[-1][0] == sortedMedals[i][0]):
      ans.append(sortedMedals[i])
    else: break
  topfive = [(e[1], -e[0][0], -e[0][1], -e[0][2]) for e in ans]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    year = str(year)
    if year in athletes_by_Year_NOC:
      medals = get_medals_by_team(athletes_by_Year_NOC, year)
      if NOC in medals:
        medalsOfTeam = medals[NOC]
        trend.append((year, medalsOfTeam[0], medalsOfTeam[1], medalsOfTeam[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    data = athletes_by_Year_NOC[year][NOC]
    for d in data:
      if d["Medal"] != "NA":
        sports.add(d["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  isFirst = True
  for noc in NOCs:
    if isFirst:
      sports = get_sports(athletes_by_Year_NOC, noc, year)
      isFirst = False
    else:
      sports &= get_sports(athletes_by_Year_NOC, noc, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น 
# Part 1
# d = convert_to_dict(data)
# print(len(d['2000']['THA']))
# for i in range(5):
#   print(d['2000']['THA'][i])
# Part 2
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(len(m))
# print(m)
# # Part 3
# d = convert_to_dict(data)
# m = get_medals_by_team(d, '2000')
# print(get_top_five(m))
# d_mock = convert_to_dict(data_mock)
# m_mock = get_medals_by_team(d_mock, '2010')
# print(get_top_five(m_mock))
# # Part 4
# d = convert_to_dict(data)
# print('USA')
# print(get_medals_trend(d, 'USA', 2001, 2015))
# print('THA')
# print(get_medals_trend(d, 'THA', 2000, 2016))
# # Part 5
# d = convert_to_dict(data)
# print(get_sports(d, 'THA', '2000'))
# print(get_sports(d, 'THA', '2010'))
# print(get_sports(d, 'THA', '2020'))
# print(get_sports(d, 'SOM', '2000'))
# print(get_sports(d, 'THA', '2008'))
# print(get_sports(d, 'VIE', '2008'))
# print(get_sports(d, 'DEN', '2008'))
# print(get_sports(d, 'XXX', '2000'))
# # Part 6
# d = convert_to_dict(data)
# print(get_common_sports(d, {'THA','VIE'}, '2008'))
# print(get_common_sports(d, {'THA','VIE','DEN'}, '2008'))
# print(get_common_sports(d, {'THA','XXX'}, '2008'))

6530294821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1202, 'const': 1274, 'code+const': 2476}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)) :
        person = {}
        for j in range(15) :
            person[data[0][j]] = data[i][j]
        y = person['Year']
        n = person['NOC']
        if not y in athletes_by_Year_NOC :
            athletes_by_Year_NOC[y] = {}
        if not n in athletes_by_Year_NOC[y] :
            athletes_by_Year_NOC[y][n] = []
        athletes_by_Year_NOC[y][n].append(person)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    data = athletes_by_Year_NOC[year]
    noc = list(athletes_by_Year_NOC[year].keys())
    for e in noc :
        medals[e] = [0,0,0]
    for e in noc :
        for i in range(len(data[e])) :
            if data[e][i]['Medal'] == 'Gold' :
                medals[e][0] +=1
            if data[e][i]['Medal'] == 'Silver' :
                medals[e][1] +=1
            if data[e][i]['Medal'] == 'Bronze' :
                medals[e][2] +=1
    for e in medals :
        medals[e] = tuple(medals[e])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    l = []
    for a,b in medals.items() :
        b = list(b)
        b[0] *= -1 ; b[1] *= -1 ; b[2] *= -1
        l.append(b + [a])
    l.sort()
    for e in l :
        e[0] *= -1 ; e[1] *= -1 ; e[2] *= -1
    for i in range(5) :
        topfive.append([l[i][3],l[i][0],l[i][1],l[i][2]])
    for i in range(5,len(l)) :
        if l[i][0:3] == l[i-1][0:3] :
            topfive.append([l[i][3],l[i][0],l[i][1],l[i][2]])
        else :
            break
    for i in range(len(topfive)) :
        topfive[i] = tuple(topfive[i])
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1) :
        if str(y) in athletes_by_Year_NOC.keys() :
            if NOC in athletes_by_Year_NOC[str(y)] :
                medals  = athletes_by_Year_NOC[str(y)][NOC]
                g = s = b = 0
                for e in medals :
                    if e['Medal'] == 'Gold' :
                        g += 1
                    elif e['Medal'] == 'Silver' :
                        s += 1
                    elif e['Medal'] == 'Bronze' :
                        b += 1
                trend.append([str(y),g,s,b])
    for i in range(len(trend)) :
        trend[i] = tuple(trend[i])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            ath = athletes_by_Year_NOC[year][NOC]
            for i in range(len(ath)) :
                if ath[i]['Medal'] == 'NA' :
                    pass
                else :
                    sports.add(ath[i]['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    noc = []
    for e in NOCs :
        noc.append(get_sports(athletes_by_Year_NOC, e, year))
    sports = noc[0]
    for i in range(len(noc)) :
        sports = sports.intersection(noc[i])
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530295421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 806, 'const': 820, 'code+const': 1626}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for s in data[1:]:
    if s[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[s[9]] = dict()
    if s[7] not in athletes_by_Year_NOC[s[9]]:
      athletes_by_Year_NOC[s[9]][s[7]] = list()
    D = dict()
    for i in range(len(data[0])): 
      D[data[0][i]] = s[i] 
    if D not in athletes_by_Year_NOC[s[9]][s[7]]:
      athletes_by_Year_NOC[s[9]][s[7]].append(D)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC: return {}
  for NOC in athletes_by_Year_NOC[year]:
    M = list([0, 0, 0])
    for d in athletes_by_Year_NOC[year][NOC]:
      M[0] += int(d['Medal'] == 'Gold')
      M[1] += int(d['Medal'] == 'Silver')
      M[2] += int(d['Medal'] == 'Bronze')
    medals[NOC] = tuple(M)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  Medal_NOC = dict()
  for m in medals:
    if medals[m] not in Medal_NOC:
      Medal_NOC[medals[m]] = set()
    Medal_NOC[medals[m]].add(m)
  for MN in sorted(Medal_NOC)[::-1]:
    for N in sorted(Medal_NOC[MN]):
      topfive.append(tuple([N] + list(MN)))
    if len(topfive) >= 5: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in athletes_by_Year_NOC:
    if start <= int(y) <= end:
      M = get_medals_by_team(athletes_by_Year_NOC, y)
      if NOC in M:
        trend.append(tuple([y] + list(M[NOC])))
  return sorted(trend)
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC: 
    if NOC in athletes_by_Year_NOC[year]:
      for d in athletes_by_Year_NOC[year][NOC]:
        if d['Medal'] != 'NA':
          sports.add(d['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  NOCS = list(NOCs)
  if len(NOCS) > 0:
    sports = get_sports(athletes_by_Year_NOC, NOCS[0], year)
    for N in NOCS:
      sports = sports & get_sports(athletes_by_Year_NOC, N, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530296021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 934, 'const': 1085, 'code+const': 2019}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for l in data[1:]:
    p = {}
    for i in range(len(l)):
        p[data[0][i]] = l[i]
    if p['Year'] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[p['Year']] = {}
    if p['NOC'] not in athletes_by_Year_NOC[p['Year']]:
        athletes_by_Year_NOC[p['Year']][p['NOC']] = []
    if p not in athletes_by_Year_NOC[p['Year']][p['NOC']]:
      athletes_by_Year_NOC[p['Year']][p['NOC']].append(p)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
      for k in athletes_by_Year_NOC[year]:
          medals[k] = [0,0,0]
          for e in athletes_by_Year_NOC[year][k]:
              if  e['Medal'] == 'Gold':
                  medals[k][0] += 1
              elif e['Medal'] == 'Silver':
                  medals[k][1] += 1
              elif e['Medal'] == 'Bronze':
                  medals[k][2] += 1
      for e in medals:
          medals[e] = tuple(medals[e])
    return medals
#======================================
def get_top_five(medals):
    topfive,order = [],[]
    for c,m in medals.items():
        m = list(m)
        for i in range(3):
            m[i] *= -1
        order.append(m+[c])
    order.sort()
    topfive = order[0:5]
    for i in range(5,len(order)):
        if order[i][0:3] == order[4][0:3]:
            topfive.append(order[i])
        else:
            break
    for i in range(len(topfive)):
        a = topfive[i]
        topfive[i] = (a[3],-1*a[0],-1*a[1],-1*a[2])
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
      if str(y) in athletes_by_Year_NOC :
        z = get_medals_by_team(athletes_by_Year_NOC,str(y))
        if NOC in z:
            x = z[NOC]
            trend.append((str(y),x[0],x[1],x[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
          for k in athletes_by_Year_NOC[year][NOC]:
              if k['Medal'] != 'NA':
                  sports.add(k['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    total= []
    for NOC in NOCs:
            total.append(get_sports(athletes_by_Year_NOC, NOC, year))
    if len(total) != 0:
        sports = set(total[0])
        for e in total:
            sports = sports & e                    
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530306721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1000, 'const': 1047, 'code+const': 2047}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}; ans = {}
    col = data[0]; o = data[1::]
    Yea = data[0].index('Year')
    Nat = data[0].index('NOC')
    for i in o:
        al = {}
        for e in range(len(col)): al[col[e]] = i[e]
        if i[Yea] in ans:
            if i[Nat] in ans[i[Yea]]: ans[i[Yea]][i[Nat]] += [al]
            else: ans[i[Yea]][i[Nat]] = [al]
        else:
             ans[i[Yea]] = {}; ans[i[Yea]][i[Nat]] = [al]
    athletes_by_Year_NOC = ans
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for i in athletes_by_Year_NOC[year]:
            m = {'G': 0, 'S': 0, 'B': 0}
            for e in athletes_by_Year_NOC[year][i]:
                if e['Medal'] == 'Gold':
                    m['G'] += 1
                elif e['Medal'] == 'Silver':
                    m['S'] += 1
                elif e['Medal'] == 'Bronze':
                    m['B'] += 1
            medals[i] = (m['G'], m['S'], m['B'])
    return medals
#======================================
def get_top_five(medals):
    topfive = []; a = dict()
    for i in medals:
        if medals[i] in a:
            a[medals[i]] += [i]
        else:
            a[medals[i]] = [i]
    top_5 = sorted(a)[::-1][:5]
    for i in top_5:
        for e in sorted(a[i]):
            topfive += [(e,) + i]
        if len(topfive) >= 5: break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    st = start; en = end; y = []
    if st%2 == 1:
        st += 1
    if en%2 == 1:
        en -= 1
    for i in athletes_by_Year_NOC:
        if st <= int(i) <= en:
            y += [i]
    for i in sorted(y):
        if NOC in athletes_by_Year_NOC[i]:
            trend += [(i,) + get_medals_by_team(athletes_by_Year_NOC, i)[NOC]]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for p in athletes_by_Year_NOC[year][NOC]:
                if p['Medal'] != 'NA':
                    sports.add(p['Sport'])
    return set(sorted(sports))
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        n = athletes_by_Year_NOC[year]
        for i in range(len(list(NOCs))):
            if list(NOCs)[i] in n and i == 0:
                sports = get_sports(athletes_by_Year_NOC, list(NOCs)[i], year)
            elif i != 0:
                sports = sports.intersection(get_sports(athletes_by_Year_NOC, list(NOCs)[i], year))
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530309621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1418, 'const': 947, 'code+const': 2365}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    if data[i][9] not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[data[i][9]] = {}
    if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
  for i in range(1,len(data)):   
    if data[i][9] in athletes_by_Year_NOC and data[i][7] in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append({data[0][j]:data[i][j] for j in range(15)})           
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  medal = ['Gold','Silver','Bronze']
  s = athletes_by_Year_NOC[year]
  for key in s:
      if key not in medals:
          medals[key] = [0,0,0]
  for key in s:
      lisofd = s[key]
      for e in lisofd:
          if e['Medal'] in medal:
              k = medal.index(e['Medal'])
              medals[key][k] += 1
          else:
              pass
  for key in medals:
      medals[key] = tuple(medals[key])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  for key in medals:
      medals[key] = list(medals[key])
  lis = [[medals[key],key] for key in medals]
  for i in range(len(lis)):
      m = lis[i]
      m[0] = [-e for e in m[0]]
  lis.sort()
  if len(lis) <= 5:
      ans = lis[0:len(lis)]        
  elif len(lis) > 5:        
      ans = lis[0:5]
      check = ans[4][0]
      for i in range(5,len(lis)):
          if lis[i][0] == check:
              ans.append(lis[i])
  for i in range(len(ans)):
      n = ans[i]
      n[0] = [-e for e in n[0]]
  for i in range(len(ans)):
      ans[i][0],ans[i][1] = ans[i][1],ans[i][0]
  for i in range(len(ans)):
      topfive.append(tuple([ans[i][0]] + ans[i][1]))  
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  ybetween = []
  lisofmed = ['Gold','Silver','Bronze']
  for key in athletes_by_Year_NOC:
      if str(start)<=key<=str(end):
          if NOC in athletes_by_Year_NOC[key]:
              ybetween.append(key)
  lis = []
  for e in ybetween:
      l = [e,0,0,0]
      y = athletes_by_Year_NOC[e][NOC]
      for d in y:
          medal = d['Medal']
          if medal in lisofmed:
              i = lisofmed.index(medal)
              j = i+1
              l[j] += 1
      lis.append(tuple(l))
  lis.sort()
  trend = lis    
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
      return set()
  if NOC not in athletes_by_Year_NOC[year]:
      return set()     
  x = athletes_by_Year_NOC[year][NOC] 
  for d in x:
      if d['Medal'] != 'NA':
          sports.add(d['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if len(NOCs) == 0:
      return set()
  if len(NOCs) == 1:
      for a in NOCs:
        m = a
      return get_sports(athletes_by_Year_NOC,m,year)  
  lis = []
  if year not in athletes_by_Year_NOC:
      return set()
  for e in NOCs:
      if e not in athletes_by_Year_NOC[year]:
          lis.append(set())            
      else:
          s = get_sports(athletes_by_Year_NOC,e,year)
          lis.append(s)
  k1 = lis[0]
  for i in range(1,len(lis)):
      k2 = lis[i]
      its = k1.intersection(k2)
      k1 = its        
  return its
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530317621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 976, 'const': 1077, 'code+const': 2053}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  row = data[0]
  information = {}
  for athlete in data[1:]:
    for i in range(len(athlete)):
      information[row[i]] = athlete[i]
    if information["Year"] in athletes_by_Year_NOC:
      if information["NOC"] in athletes_by_Year_NOC[information["Year"]]:
        athletes_by_Year_NOC[information["Year"]][information["NOC"]].append(information)
      else:
        athletes_by_Year_NOC[information["Year"]][information["NOC"]] = [information]
    else:
      athletes_by_Year_NOC[information["Year"]] = {information["NOC"] : [information]}
    information = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  d = athletes_by_Year_NOC
  d_by = d[year]
  if year not in athletes_by_Year_NOC:
    return {}
  for e in d_by.items():
    gold = 0
    silver = 0
    bronze = 0
    for j in e[1]:
      if j["Medal"] == 'Gold':
        gold += 1
      elif j["Medal"] == 'Silver':
        silver += 1
      elif j["Medal"] == 'Bronze':
        bronze += 1
    medals[e[0]] = (gold,silver,bronze )
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l =  []
  prer = []
  for x,y in medals.items():
    l += [[[-e for e in y] ,x]]
  l.sort()
  for e in l:
    prer.append((e[1],abs(e[0][0]),abs(e[0][1]),abs(e[0][2])))
  for i in range(5):
    topfive.append(prer[i])
  x = topfive[4][1:]
  for e in prer[5:]:
    if e[1:] == x:
      topfive.append(e)
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  d = athletes_by_Year_NOC
  year_w = []
  for e in d.keys():
    if int(e) in range(start,end+1):
      year_w.append(e)
  for e in year_w:
    a = get_medals_by_team(d,e)
    if NOC in a:
      ymed = a[NOC]
      trend.append(tuple([e,ymed[0],ymed[1],ymed[2]]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  dat = athletes_by_Year_NOC
  if year not in dat or NOC not in dat[year]:
    return sports
  else:
    for e in dat[year][NOC]:
      a = e["Medal"]
      if a == "Gold" or a == "Silver" or a == "Bronze":
        sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  info = athletes_by_Year_NOC
  a = []
  for e in NOCs:
    a.append(get_sports(athletes_by_Year_NOC, e, year))
  inters = a[0]
  for i in range(1,len(a)):
    inters = inters.intersection(a[i])
  sports = inters
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530322721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1086, 'const': 1016, 'code+const': 2102}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  a={}
  for i in data[1::]:
    b={}
    for e in range(len(data[0])):
      b[data[0][e]]=i[e]
    if i[9] in a:
      if i[7] in a[i[9]]:
        a[i[9]][i[7]].append(b)
      else:
        a[i[9]][i[7]]=[b]
    else:
      a[i[9]]={}
      a[i[9]][i[7]]=[b]
  return a
#======================================
def get_medals_by_team(athletes_by_Year_Noc,year):
  a=athletes_by_Year_Noc[year]
  b={}
  for i in a:
    b[i]=[0,0,0]
    for e in a[i]:
      if e['Medal']=='Gold':
        b[i][0]+=1
      elif e['Medal']=='Silver':
        b[i][1]+=1
      elif e['Medal']=='Bronze':
        b[i][2]+=1
    b[i]=tuple(b[i])
  return b
#======================================
def get_top_five(medals):
  a=[[-a for a in medals[i]]+[i] for i in medals]
  a.sort()
  if len(a)<=5:
    return [tuple([e[3]]+[-a for a in e[:3:]]) for e in a]
  b=a[:5:]
  i=5
  while a[i][:3]==a[4][:3]:
    b.append(a[i])
    i+=1
  return [tuple([e[3]]+[-a for a in e[:3:]]) for e in b]
#======================================
def get_medals_trend(athletes_by_year_NOC,NOC,start,end):
  a=[]
  for i in athletes_by_year_NOC:
    if start<=int(i)<=end:
      if NOC in get_medals_by_team(athletes_by_year_NOC,i):
        a.append((i,)+get_medals_by_team(athletes_by_year_NOC,i)[NOC])
      elif NOC in athletes_by_year_NOC[i] :
        a.append((i,0,0,0))
  return sorted(a)
#======================================
def get_sports(athletes_by_Year_NOC,NOC,year):
  a=set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal']!='NA':
        a.add(i['Sport'])
  return a
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs,year):
  if len(NOCs)==0:
    return set()
  a=tuple(NOCs)
  if not year in athletes_by_Year_NOC:
    return set()
  b=get_sports(athletes_by_Year_NOC,a[0],year)
  for i in a[1::]:
    c=get_sports(athletes_by_Year_NOC,i,year)
    b=b&c
    if b==set():
      return set()
  return b
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530323321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1022, 'const': 1213, 'code+const': 2235}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  x=data[0]
  for i in data[1::]:
    if i[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[i[9]]={}
    if i[7] not in athletes_by_Year_NOC[i[9]]:
      athletes_by_Year_NOC[i[9]][i[7]]=[]
    u={}
    for j in range(len(i)):
      u[x[j]]=i[j]
    athletes_by_Year_NOC[i[9]][i[7]].append(u)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {} #ath=dict each year dict each noc list each player dict each stat
  if year not in athletes_by_Year_NOC:
    return medals
  me=athletes_by_Year_NOC[year]
  for i in me:    
    gsb=[0,0,0] 
    for j in me[i]:
      if j['Medal']=='Gold':
        gsb[0]+=1
      elif j['Medal']=='Silver':
        gsb[1]+=1
      elif j['Medal']=='Bronze':
        gsb[2]+=1
    g,s,b=gsb
    medals[i]=(g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medal_list=[]
  sor_be4=[]
  for i in medals:
    medal_list.append([-medals[i][0],-medals[i][1],-medals[i][2],i])
  medal_list.sort()
  for i in medal_list[:5:]:
    topfive.append((i[3],abs(i[0]),abs(i[1]),abs(i[2])))
  for i in medal_list[5::]:
    pre=topfive[-1]
    cur=(i[3],abs(i[0]),abs(i[1]),abs(i[2]))
    if pre[1]==cur[1] and pre[2]==cur[2] and pre[3]==cur[3]:
      topfive.append(cur)
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = [] #ath=dict each year dict each noc list each player dict each stat
  use_year=[]
  for i in athletes_by_Year_NOC:
    if end>=int(i)>=start:
      use_year.append(i)
  use_year.sort()
  for i in use_year:
    if NOC not in athletes_by_Year_NOC[i]:
      use_year.remove(i)
  for i in use_year:
    g,s,b=0,0,0
    for j in athletes_by_Year_NOC[i][NOC]:
      if j['Medal']=='Gold':
        g+=1
      elif j['Medal']=='Silver':
        s+=1
      elif j['Medal']=='Bronze':
        b+=1
    trend.append((i,g,s,b))
  return  trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set() #ath=dict each year dict each noc list each player dict each stat
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]: #i = each dict player 
        if i['Medal']!='NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for i in NOCs:
    sports=sports|get_sports(athletes_by_Year_NOC, i, year)
  for i in NOCs: 
    sports=sports&get_sports(athletes_by_Year_NOC, i, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530324021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1316, 'const': 1411, 'code+const': 2727}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    x = {}
    list_of_15 = []
    for i in range(len(data)):
        if i > 0:
            if data[i][9] not in athletes_by_Year_NOC:
                athletes_by_Year_NOC[data[i][9]] = {}
            if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
            for a in range(len(data[i])):
                x[data[0][a]] = data[i][a]
            list_of_15.append(x)
            x = {}
    for c in list_of_15:
        for year in athletes_by_Year_NOC:
            if c['Year'] == year:
                for noc in athletes_by_Year_NOC[year]:
                    if noc == c['NOC']:
                       athletes_by_Year_NOC[year][noc].append(c) 
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for e in athletes_by_Year_NOC[year]:
            if e not in medals:
                medals[e] = [0,0,0]
        for e in medals:
            for c in athletes_by_Year_NOC[year]:
                if e == c:
                    for i in athletes_by_Year_NOC[year][e]:
                        if i['Medal'] == 'Gold':
                            medals[e][0] += 1
                        elif i['Medal'] == 'Silver':
                            medals[e][1] += 1
                        elif i['Medal'] == 'Bronze':
                            medals[e][2] += 1
        for i in medals:
            medals[i] = tuple(medals[i])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    x = []
    for i in medals:
        x.append([(-1)*medals[i][0],(-1)*medals[i][1],(-1)*medals[i][2],i])
    x.sort()
    y = []
    for e in x:
        y.append((e[3], (-1)*e[0], (-1)*e[1], (-1)*e[2]))
    for c in y[0:5]:
        topfive.append(c)
    for u in y[5::]:
        if [topfive[-1][1], topfive[-1][2], topfive[-1][3]] == [u[1], u[2], u[3]]:
            topfive.append(u)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    x = []
    year = []
    for i in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[i]:
            if start <= int(i) <= end:
                x.append(athletes_by_Year_NOC[i])
                year.append([i,0,0,0])
    year.sort()
    for c in x:
        for e in c:
            if e == NOC:
                for t in c[e]:                    
                    if t['Medal'] == 'Gold':
                        for i in year:
                            if i[0] == t['Year']:
                                i[1] += 1
                    elif t['Medal'] == 'Silver':
                        for i in year:
                            if i[0] == t['Year']:
                                i[2] += 1
                    elif t['Medal'] == 'Bronze':
                        for i in year:
                            if i[0] == t['Year']:
                                i[3] += 1    
    for i in year:
        trend.append(tuple(i))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    for i in athletes_by_Year_NOC:
        if i == year:
            for e in athletes_by_Year_NOC[i]:
                if e == NOC:
                    for u in athletes_by_Year_NOC[i][e]:
                        if u['Medal'] != 'NA':
                            sports.add(u['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    x = []
    for i in NOCs:
        x.append(get_sports(athletes_by_Year_NOC, i, year))
    a = x[0]
    for e in x[1:]:
        a = a & e
    sports = a
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530326221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1146, 'const': 1105, 'code+const': 2251}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  year = {}
  pre1 = {}
  for i in range(1,len(data)):
    for j in range(len(data[0])):
      pre1[data[0][j]] = data[i][j]
    if data[i][9] not in year:
      year[data[i][9]] = {}
    if data[i][9] in year and data[i][7] in year[data[i][9]]:
      year[data[i][9]][data[i][7]].append(pre1)
    else:
      year[data[i][9]][data[i][7]] = [pre1]
    pre1 = {}
  athletes_by_Year_NOC = year
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  g = 0 ; s = 0; b = 0
  for key in athletes_by_Year_NOC[year]:
    k = athletes_by_Year_NOC[year][key]
    for i in range(len(k)):
      med = k[i]['Medal']
      if med == 'Gold':
        g += 1
      elif med == 'Silver':
        s += 1
      elif med == 'Bronze':
        b += 1
    medals[key] = (g,s,b)
    g = 0 ; s = 0 ; b = 0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  pre = []
  out = []
  for key in medals:
    g,s,b = -int(medals[key][0]), -int(medals[key][1]), -int(medals[key][2])
    pre.append([[g,s,b], key])
  pre.sort()
  for i in range(len(pre)):
    g,s,b = -pre[i][0][0], -pre[i][0][1], -pre[i][0][2]
    out.append((pre[i][1], g, s, b))
  topfive = out[:5]
  for i in range(5,len(out)):
    if out[i][1:] == topfive[-1][1:]:
      topfive.append(out[i])
    else: break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
    if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]:
      k = athletes_by_Year_NOC[str(i)][NOC]
      g = 0 ; s = 0; b = 0
      for j in range(len(k)):
        med = k[j]['Medal']
        if med == 'Gold':
            g += 1
        elif med == 'Silver':
            s += 1
        elif med == 'Bronze':
            b += 1
      trend.append((str(i), g, s, b))
      g = 0 ; s = 0 ; b = 0
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    target = athletes_by_Year_NOC[year][NOC]
    for i in range(len(target)):
      if target[i]['Medal'] != 'NA':
        sports.add(target[i]['Sport'])
    return sports
  else:
    return set()
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  pre = []
  for a in NOCs:
      pre.append(a)
  sports = get_sports(athletes_by_Year_NOC, pre[0], year)
  k = pre[1:]
  for i in range(len(k)):
      j = get_sports(athletes_by_Year_NOC, k[i], year)
      sports = sports.intersection(j)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530329121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1246, 'const': 1467, 'code+const': 2713}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data[1:]:
        if e[9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[e[9]] = {}
            athletes_by_Year_NOC[e[9]][e[7]] = []
            a = {}
            b = data[0]
            for i in range(15):
                a[b[i]] = e[i]
            athletes_by_Year_NOC[e[9]][e[7]].append(a)
        else:
             if e[7] not in athletes_by_Year_NOC[e[9]]:
                 athletes_by_Year_NOC[e[9]][e[7]] = []
                 a = {}
                 b = data[0]
                 for i in range(15):
                     a[b[i]] = e[i]
                 athletes_by_Year_NOC[e[9]][e[7]].append(a)
             else:
                 a = {}
                 b = data[0]
                 for i in range(15):
                     a[b[i]] = e[i]
                 athletes_by_Year_NOC[e[9]][e[7]].append(a)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for key in athletes_by_Year_NOC[year]:
            g = 0
            s = 0
            b = 0 
            for e in athletes_by_Year_NOC[year][key]:
                if e['Medal'] == 'NA':
                    pass
                else:
                    if e['Medal'] == 'Gold':
                        g += 1
                    if e['Medal'] == 'Silver':
                        s += 1
                    if e['Medal'] == 'Bronze':
                        b += 1
            medals[key] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    toptop = []
    top = [[v,k] for k,v in medals.items()]
    top.sort()
    top = top[::-1]
    toptop = top[:5]
    for i in range(5,len(top)):  
        if top[i][0] != top[4][0]:
            break
        else:
            toptop.append(top[i])
    toptop = topfivenew(toptop)
    for e in toptop:
        x = (e[1],-e[0][0],-e[0][1],-e[0][2])
        topfive.append(x)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(i)]:
                g = 0
                s = 0
                b = 0
                for e in athletes_by_Year_NOC[str(i)][NOC]: 
                    if e['Medal'] == 'Gold':
                        g += 1
                    if e['Medal'] == 'Silver':
                        s += 1
                    if e['Medal'] == 'Bronze':
                        b += 1
                r = (str(i),g,s,b)
                trend.append(r)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != "NA":
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        j = []
        for e in NOCs:
            if e in athletes_by_Year_NOC[year]:
                l = set()
                for c in athletes_by_Year_NOC[year][e]:
                    if c['Medal'] != 'NA':
                        l.add(c['Sport'])
                j.append(l)
            else:
                j.append(set())
    sports = j[0]
    for i in range(1,len(j)):
        sports = sports&j[i]
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def topfivenew(toptop):
    new = []
    for e in toptop:
        r = (-e[0][0],-e[0][1],-e[0][2])
        new.append([r,e[1]])
    new.sort()
    return new

6530334221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1038, 'const': 1195, 'code+const': 2233}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1:]:
    if i[9] in athletes_by_Year_NOC:
      if i[7] in athletes_by_Year_NOC[i[9]]:
        athletes_by_Year_NOC[i[9]][i[7]].append(dict(zip(data[0], i)))
      else:
        athletes_by_Year_NOC[i[9]][i[7]] = [dict(zip(data[0], i))]
    else:
      athletes_by_Year_NOC[i[9]] = {i[7]: [dict(zip(data[0], i))]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]: 
    medals[i] = [0,0,0]
    for k in athletes_by_Year_NOC[year][i]: 
      if k['Medal'] == 'Gold':
        medals[i][0] += 1
      elif k['Medal'] == 'Silver':
        medals[i][1] += 1
      elif k['Medal'] == 'Bronze':
        medals[i][2] += 1
    medals[i]=tuple(medals[i])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sortedmedals = []
  for i in medals:
    sortedmedals.append([-medals[i][0],-medals[i][1],-medals[i][2],i])
  sortedmedals.sort()
  prev = [sortedmedals[0][0], sortedmedals[0][1], sortedmedals[0][2]]
  topfive.append((sortedmedals[0][3],-sortedmedals[0][0], -sortedmedals[0][1], -sortedmedals[0][2]))
  count = 1
  for i in sortedmedals[1:]:
    if count == 4:
      prev = [i[0],i[1],i[2]]
    if count >=5 and not (i[0] == prev[0] and i[1] == prev[1] and i[2] == prev[2]):
      break
    topfive.append((i[3],-i[0],-i[1],-i[2]))
    count += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in athletes_by_Year_NOC:
    if int(i) >= start and int(i) <= end:
      g=get_medals_by_team(athletes_by_Year_NOC, i)
      if NOC in g:
        trend.append((i, g[NOC][0],g[NOC][1],g[NOC][2]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
     for i  in athletes_by_Year_NOC[year][NOC]:
       if i['Medal'] != 'NA':
        sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  j =0
  if year in athletes_by_Year_NOC:
    for i in NOCs:
      if i in athletes_by_Year_NOC[year]:
        NOCSport = set()
        for i  in athletes_by_Year_NOC[year][i]:
          if i['Medal'] != 'NA':
            NOCSport.add(i['Sport'])
        if j == 0:
          sports = NOCSport
        else:
          sports = sports.intersection(NOCSport)
      j+=1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530343921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 866, 'const': 948, 'code+const': 1814}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data[1:]:
        if e[9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[e[9]] = {}
        if e[7] not in athletes_by_Year_NOC[e[9]]:
            athletes_by_Year_NOC[e[9]][e[7]] = []
        k = {}
        for i in range(15):
            k[data[0][i]] = e[i]
        athletes_by_Year_NOC[e[9]][e[7]] += [k]
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for e in athletes_by_Year_NOC[year]:
            tm = [0,0,0]
            for i in range(len(athletes_by_Year_NOC[year][e])):
                if athletes_by_Year_NOC[year][e][i]['Medal'] == 'Gold':
                    tm[0] += 1
                elif athletes_by_Year_NOC[year][e][i]['Medal'] == 'Silver':
                    tm[1] += 1
                elif athletes_by_Year_NOC[year][e][i]['Medal'] == 'Bronze':
                    tm[2] += 1
            tm = tuple(tm)
            medals[e] = tm
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    tt = []
    for e in medals:
        tt.append(tuple(x*-1 for x in medals[e])+(e,))
    tt.sort()
    for i in range(len(tt)):
        if len(topfive) >= 5:
            if medals[tt[i][3]] != medals[tt[i-1][3]]:
                break
        topfive.append((tt[i][3],)+tuple(medals[tt[i][3]]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC:
            if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)):
                trend += [tuple([str(i)]+list(get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]))]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != 'NA':
                    sports = sports | {e['Sport']}
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    k = list(set()|NOCs)
    sports = sports|get_sports(athletes_by_Year_NOC, k[0], year)
    for e in k:
        sports = sports&get_sports(athletes_by_Year_NOC, e, year)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530352521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1128, 'const': 1094, 'code+const': 2222}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  x=data[0].index("Year")
  y=data[0].index("NOC")
  for i in range(1,len(data)):
    p={}
    for j in range(len(data[i])):
      p[data[0][j]]=data[i][j]
    if data[i][x] not in athletes_by_Year_NOC:
      q={}
      q[data[i][y]]=[p]
      athletes_by_Year_NOC[str(data[i][x])]=q
    elif data[i][y] not in athletes_by_Year_NOC[data[i][x]]:
      athletes_by_Year_NOC[str(data[i][x])][data[i][y]]=[p]
    else:
      athletes_by_Year_NOC[str(data[i][x])][data[i][y]]+=[p]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
    g,s,b=0,0,0
    for j in athletes_by_Year_NOC[year][i]:
      if j['Medal'] == "Gold":
        g+=1
      elif j['Medal'] == "Silver":
        s+=1
      elif j['Medal'] == "Bronze":
        b+=1
    x=(g, s, b)
    medals[i]=x
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  g,s,b=0,0,0
  name=[]
  z=[]
  while len(name)<5:
    for i in medals:
      if i in name:
        pass
      else:
        x=medals[i]
        if g<x[0]:
          g,s,b=x[0],x[1],x[2]
        elif g==x[0]:
          if s<x[1]:
            g,s,b=x[0],x[1],x[2]
          elif s==x[1]:
            if b<x[2]:
              g,s,b=x[0],x[1],x[2]
    y=(g, s, b)
    for i in medals:
      if medals[i] == y:
        z.append(i)
    z.sort()
    name+=z
    g,s,b=0,0,0
    y=()
    z=[]
  for i in name:
    x=medals[i]
    topfive.append((i, x[0], x[1], x[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start%2==1:
    start+=1
  if end%2==1:
    end-=1
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      y=get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in y:
        x=[int(e) for e in y[NOC]]
        trend.append((str(i), x[0], x[1], x[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]:
        if i["Medal"] in  ("Gold", "Silver", "Bronze"):
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  first=True
  for i in NOCs:
    if first == True:
      sports=get_sports(athletes_by_Year_NOC, i, year)
      first=False
    else:
      sports=sports&get_sports(athletes_by_Year_NOC, i, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530359021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 984, 'const': 932, 'code+const': 1916}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC,noc = {},{}
  for i in range(1,len(data)):
    for j in range(len(data[i])):
      noc[data[0][j]] = data[i][j]
    if data[i][9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[noc]}
    else:
      if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = [noc]
      else:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] += [noc]
    noc = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals,b,s = {},len(athletes_by_Year_NOC[year]),[0,0,0]
  for c in athletes_by_Year_NOC[year]:
    f = athletes_by_Year_NOC[year][c]
    for i in range(len(f)):
      if f[i]['Medal'] == 'Gold': s[0] += 1
      elif f[i]['Medal'] == 'Silver': s[1] += 1
      elif f[i]['Medal'] == 'Bronze' : s[2] += 1
    medals[c] = tuple(s)
    s = [0,0,0]
  return medals
#======================================
def get_top_five(medals):
  topfive,more = [],[]
  for c in medals:
    g,s,b = medals[c][0],medals[c][1],medals[c][2]
    topfive.append((-g,-s,-b,c))
  topfive = sorted(topfive)
  g5,s5,b5,noc5 = topfive[4]
  for g,s,b,noc in topfive[5:]:
    if g5 == g and s5 == s and b5 == b  :
      more += [(noc,-g,-s,-b)]
  topfive = [(noc,-g,-s,-b) for g,s,b,noc in topfive[:5]]
  topfive += more
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      f = get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in f: 
        trend += [(str(i),) + f[NOC]]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for c in athletes_by_Year_NOC[year][NOC]:
        if c['Medal'] != 'NA':
          sports.add(c['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports,s = set(),1
  for c in NOCs:
    if s == 1:
      a = get_sports(athletes_by_Year_NOC,c, year) 
      b = a
      s += 1
    else: 
      a = get_sports(athletes_by_Year_NOC,c, year)
    b &= a
  sports = b
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530361121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1078, 'const': 984, 'code+const': 2062}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for d in data[1:]:
    if d[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[d[9]] = {}
      athletes_by_Year_NOC[d[9]][d[7]] = []
    elif d[7] not in athletes_by_Year_NOC[d[9]]:
      athletes_by_Year_NOC[d[9]][d[7]] = []
    a = {}
    for i in range(len(data[0])):
      a[data[0][i]] = d[i]
    athletes_by_Year_NOC[d[9]][d[7]].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {}
  for co in athletes_by_Year_NOC[year]:
    prize = [0,0,0]
    for name in athletes_by_Year_NOC[year][co]:
      if name['Medal'] == 'Gold':
        prize[0]+=1
      elif name['Medal'] == 'Silver':
        prize[1]+=1
      elif name['Medal'] == 'Bronze':
        prize[2]+=1
    medals[co] = (prize[0],prize[1],prize[2])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  blur = []
  for co in medals:
    blur.append([medals[co][0]*-1, medals[co][1]*-1, medals[co][2]*-1,co])
  blur.sort()
  for r in blur[:5]:
    topfive.append((r[3],-r[0],-r[1],-r[2]))
  c =5
  while c < len(blur) and topfive[-1][1] == -blur[c][0] and topfive[-1][2] == -blur[c][1] and topfive[-1][3] == -blur[c][2]:
    topfive.append((blur[c][3],-blur[c][0],-blur[c][1],-blur[c][2]))
    c+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  y = start
  while y != end+1:
    if str(y) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(y)]:
      au,ag,cu = get_medals_by_team(athletes_by_Year_NOC, str(y))[NOC]
      trend.append((str(y),au,ag,cu))
    y+=1
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for s in athletes_by_Year_NOC[year][NOC]:
      if s['Medal'] != 'NA':
        sports.add(s['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sp = []
  for c in NOCs:
    sp.append(get_sports(athletes_by_Year_NOC,c, year))
  sports = sp[0]
  for i in sp[1:]:
    sports = sports.intersection(i)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530366321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1474, 'const': 1454, 'code+const': 2928}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)) :
    athletes_by_Year_NOC[data[i][9]] = {}
  for i in range(1,len(data)) :
    if data[i][7] in  athletes_by_Year_NOC[data[i][9]] :
      athletes_by_Year_NOC[data[i][9]][data[i][7]] += [{'ID':data[i][0], 'Name':data[i][1], 'Sex':data[i][2], 'Age':data[i][3], 'Height':data[i][4], 'Weight':data[i][5], 'Team':data[i][6], 'NOC':data[i][7], 'Games':data[i][8], 'Year':data[i][9], 'Season':data[i][10], 'City':data[i][11], 'Sport':data[i][12], 'Event':data[i][13], 'Medal':data[i][14]}]
    else :
      athletes_by_Year_NOC[data[i][9]][data[i][7]] = [{'ID':data[i][0], 'Name':data[i][1], 'Sex':data[i][2], 'Age':data[i][3], 'Height':data[i][4], 'Weight':data[i][5], 'Team':data[i][6], 'NOC':data[i][7], 'Games':data[i][8], 'Year':data[i][9], 'Season':data[i][10], 'City':data[i][11], 'Sport':data[i][12], 'Event':data[i][13], 'Medal':data[i][14]}]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  g = 0
  s = 0
  b = 0
  if year in athletes_by_Year_NOC :
    for i in athletes_by_Year_NOC[year] :
      for e in athletes_by_Year_NOC[year][i] :
        for c in e :
          if e[c] == 'Gold' :
            g += 1
          elif e[c] == 'Silver' :
            s += 1 
          elif e[c] == 'Bronze' :
            b += 1     
      medals[i] = (g,s,b)
      g,s,b = 0,0,0 
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l = []
  n = 0
  p = 0
  for i in medals :
     l.append([medals[i],i])
  S = sorted(l,reverse=True)
  if medals != {} :
    while n<len(S) :
      topfive.append(tuple([S[n][1],S[n][0][0],S[n][0][1],S[n][0][2]]))
      if n >= 4 and n<len(S)-1 :
        if [S[n][0][0],S[n][0][1],S[n][0][2]] != [S[n+1][0][0],S[n+1][0][1],S[n+1][0][2]] :
          break
      n += 1
    while p < len(topfive)-1 :
      if [topfive[p][1],topfive[p][2],topfive[p][3]] == [topfive[p+1][1],topfive[p+1][2],topfive[p+1][3]] :
        if topfive[p][0] > topfive[p+1][0] :
          topfive[p],topfive[p+1] = topfive[p+1],topfive[p]
          p = 0
        else : p+=1
      else : p+=1  
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1) :
    if str(i) in athletes_by_Year_NOC :
      if NOC in athletes_by_Year_NOC[str(i)] :
        m = [str(i)] + list(get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC])
        trend.append(tuple(m))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    med = get_medals_by_team(athletes_by_Year_NOC,year)
    if NOC in med :
      if med[NOC] != (0,0,0) :
        for i in athletes_by_Year_NOC[year][NOC] :
          if i['Medal'] != 'NA' :
            sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  n = 0
  l = []
  for i in NOCs :
    l.append(get_sports(athletes_by_Year_NOC, i, year))
  if list(NOCs) != [] :
    sports = get_sports(athletes_by_Year_NOC, list(NOCs)[0] , year)
  for c in l :
    sports = sports.intersection(c)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530367021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 946, 'const': 1189, 'code+const': 2135}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for coloumn in data[1::]:
    tuamom={}
    Noc, Year= coloumn[7], coloumn[9]
    if Year not in  athletes_by_Year_NOC:
      athletes_by_Year_NOC[Year]={}
    if Noc not in  athletes_by_Year_NOC[Year]:
      athletes_by_Year_NOC[Year][Noc]=[]
    for i in range(len(data[0])):
      tuamom[data[0][i]]=coloumn[i]
    athletes_by_Year_NOC[Year][Noc].append(tuamom)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
     pass
  else:
     tuamom=athletes_by_Year_NOC[year]
     for country in tuamom:
       aurum, silver, copper=0,0,0
       for i in tuamom[country]:
         if  i['Medal']=='Gold':
           aurum+=1
         elif i['Medal']=='Silver':
           silver+=1
         elif i['Medal']=='Bronze':
           copper+=1
         else:pass
       medals[country]=(aurum,silver,copper)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sudsuay=[]
  for i in  medals:
        j=medals[i]
        sudsuay.append([-j[0],-j[1],-j[2],i])
  sudsuay.sort()
  c=0
  while True :
    if c<5  :
          topfive.append((sudsuay[c][3],-sudsuay[c][0],-sudsuay[c][1],-sudsuay[c][2]))
    else :
            if sudsuay[c-1][:3]==sudsuay[c][:3]:
              topfive.append((sudsuay[c][3],-sudsuay[c][0],-sudsuay[c][1],-sudsuay[c][2])) 
            else:
              break
    c+=1
    if c >= len(sudsuay):
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1,1):
    if str(i) not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[str(i)]:
      continue
    aurum,silver,copper=0,0,0
    tuamom=athletes_by_Year_NOC[str(i)][NOC]
    for sudlhor in tuamom:
      if  sudlhor['Medal']=='Gold':
        aurum+=1
      elif sudlhor['Medal']=='Silver':
        silver+=1
      elif sudlhor['Medal']=='Bronze':
        copper+=1
      else:pass
    trend.append((str(i),aurum,silver,copper))  
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    sudsuay= athletes_by_Year_NOC[year][NOC]
    for tuamom in sudsuay:
      if tuamom['Medal']!='NA':
        sports.add(tuamom['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sudsuay=get_sports(athletes_by_Year_NOC, list(NOCs)[-1], year)
  for i in NOCs:
    sudsuay=sudsuay.intersection(get_sports(athletes_by_Year_NOC, i, year))
  sports=sudsuay
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530370821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1092, 'const': 1044, 'code+const': 2136}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        a=data[i]
        a=[dict(zip(data[0],a))]
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]]={}
        if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]]=a     
        else:
            athletes_by_Year_NOC[data[i][9]][data[i][7]]+=a
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        for i in athletes_by_Year_NOC[year]:
            medco = [0,0,0]
            for j in range(len(athletes_by_Year_NOC[year][i])):
                if athletes_by_Year_NOC[year][i][j]['Medal'] == 'Gold':
                    medco[0] += 1
                elif athletes_by_Year_NOC[year][i][j]['Medal'] == 'Silver':
                    medco[1] +=1
                elif athletes_by_Year_NOC[year][i][j]['Medal'] == 'Bronze':
                    medco[2] +=1
            medals[i] = tuple(medco)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    b=[]
    c=[]
    for i in medals:
        a=tuple(e*(-1) for e in list(medals[i]))
        b.append([a,i])
    b.sort()
    if len(b) <5:
        c=b[0:len(b)]
    else:
        c=b[0:5]
    for i in range(len(b)-1):
        if i >=4:
            if b[i][0]==b[i+1][0]:
                c=b[0:i+2]
            else:
                break
    for i in range(len(c)):
        f=tuple(j*(-1) for j in c[i][0])
        topfive.append(tuple([c[i][1]]+list(f)))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        mmt=[]
        if str(i) in athletes_by_Year_NOC:
            a=get_medals_by_team(athletes_by_Year_NOC,str(i))
            if NOC in a:
                mmt=[str(i)]+list(a[NOC])
                trend.append(tuple(mmt))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i['Medal'] != 'NA':
                    sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    tempo=[]
    for i in NOCs:
        if i in athletes_by_Year_NOC[year]:
            a = get_sports(athletes_by_Year_NOC, i, year)
            tempo.append(a)
        else:
            sports=set()
            break
    if len(tempo) == len(NOCs):
        b=tempo[0]
        if len(tempo)==1:
          b=tempo[0]
        else:
          for i in range(len(tempo)):
              b = tempo[0].intersection(tempo[i],b)
        sports = b
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530372021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1200, 'const': 1128, 'code+const': 2328}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    if len(data) == 1:    
        return {}
    key       = data[0]
    year_pos  = key.index('Year')
    noc_pos   = key.index('NOC')
    athletes_by_Year_NOC={str(i):{} for i in range(2000,2017,2)}
    for i  in data[1:]:
        noc  = i[noc_pos]
        year = i[year_pos]
        if noc in athletes_by_Year_NOC[i[year_pos]]:
            athletes_by_Year_NOC[year][noc]    .append    ( target_person( i , key) )
        else:
            athletes_by_Year_NOC[year][noc]     =         [ target_person( i , key) ]
    return { k:v for k,v in athletes_by_Year_NOC.items() if v != {}}
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    sample_space = athletes_by_Year_NOC[year]
    return { k : get_medal(v) for k,v in sample_space.items()}
#======================================
def get_top_five(medals):
    if len(medals) == 0:
        return []
    ranked = sorted( { tuple([-i for i in v]) + ( k ,)  for k , v in medals.items() } ) 
    top5_ranked=[ ( i[-1] ,) + tuple([-a for a in i[:-1]]) for i in ranked[:5] ]
    for i in ranked[5:]:
        stat= top5_ranked[-1][1:]
        if i[:-1] == tuple([-a for a in stat]):
            top5_ranked.append( ( i[-1] ,) + stat )
        else:
            break
    return top5_ranked
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    s = 2000 if start<2000 else start
    s = s +1 if s%2  == 1 else s
    e = 2017 if end>2016 else end
    e = e +1 if e%2  == 0 else e
    stat_each_year = []
    for i in range(s,e,2):
        year = str(i)
        if year in athletes_by_Year_NOC:         
            if NOC in athletes_by_Year_NOC[year]:
                v = athletes_by_Year_NOC[year][NOC]
                stat_each_year.append( (year,) + get_medal(v) )
    return stat_each_year
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            sports = { i['Sport'] for i in athletes_by_Year_NOC[year][NOC] if i['Medal'] != 'NA' }
            return sports if len(sports) != 0 else set()
    return set()
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    same_sports=set()
    for i in NOCs:
        if len(same_sports)!=0:
            same_sports  = get_sports(athletes_by_Year_NOC,i, year) & same_sports
        else:
            same_sports  = get_sports(athletes_by_Year_NOC,i, year)
        if len(same_sports)==0:
            return same_sports
    return same_sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def get_medal(v):  
    key     =  'Gold Silver Bronze NA'.split()
    medal   = { i:0 for i in key }
    for i in v:
        ranked_type = i['Medal']
        medal[ ranked_type ] += 1   
    return tuple( medal[i] for i in key[:-1] )
def target_person(target_data , key):
    return { key[i] : target_data[i] for i in range( len(key) ) }

6530373721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1362, 'const': 1115, 'code+const': 2477}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:]:
    if e[9] not in athletes_by_Year_NOC: 
      athletes_by_Year_NOC[e[9]] = ''
      if e[7] not in athletes_by_Year_NOC[e[9]]:
        x = {}
        for i in range(len(e)):
          x[data[0][i]] = e[i] 
        athletes_by_Year_NOC[e[9]] = {e[7]:[x]}
    else :
      if e[7] not in athletes_by_Year_NOC[e[9]]:
        x = {}
        for i in range(len(e)):
          x[data[0][i]] = e[i] 
        athletes_by_Year_NOC[e[9]][e[7]] = [x]
      else :
        x = {}
        for i in range(len(e)):
          x[data[0][i]] = e[i]
        athletes_by_Year_NOC[e[9]][e[7]].append(x)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    x = athletes_by_Year_NOC[year]
    for e in x:
      medal_count = [0,0,0]
      info = x[e]
      for b in info:
        if b['Medal'] == 'Gold':
          medal_count[0] += 1
        elif b['Medal'] == 'Silver':
          medal_count[1] += 1
        elif b['Medal'] == 'Bronze':
          medal_count[2] += 1
      medals[e] = (medal_count[0],medal_count[1],medal_count[2])
  return medals
#======================================
def get_top_five(medals):
  topfive = []  
  y = []
  for e in medals:
    z = medals[e]
    p = []
    for k in z:
        p.append(k)
    p.append(e)
    y.append(p)
    y.sort()
  top = []
  if len(y) != 0:
    top.append([y[-1]])
    for i in range(-2,-len(y)-1,-1):
        if y[i][0:3] != y[i+1][0:3]:
          top.append([y[i]])
        else :
          top[-1].append(y[i])
  if len(top) != 0:
    for e in top:
        x = sorted(e)
        for i in range(len(x)):
            if len(topfive) < 5:
                topfive.append((x[i][3],x[i][0],x[i][1],x[i][2]))
            elif x[i][0] == topfive[-1][1] and x[i][1] == topfive[-1][2] and x[i][2] == topfive[-1][3]:
                topfive.append((x[i][3],x[i][0],x[i][1],x[i][2]))
            elif x[i][0] != topfive[-1][1] and x[i][1] != topfive[-1][2] and x[i][2] != topfive[-1][3]:
                return topfive
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        gold = get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC][0]
        silver = get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC][1]
        bronze = get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC][2]
        trend.append((str(i),gold,silver,bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
          if e['Medal'] != 'NA':
            sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  count = 0
  for e in NOCs :
      if count == 0 :
          sports = sports.union(get_sports(athletes_by_Year_NOC,e,year))
          count += 1
      else :
          sports = sports.intersection(get_sports(athletes_by_Year_NOC,e,year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530375021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 872, 'const': 916, 'code+const': 1788}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    year = data[i][9] ; noc = data[i][7] ; x = {}
    for j in range(len(data[i])): x[data[0][j]] = data[i][j]
    if year in athletes_by_Year_NOC: 
      if noc in athletes_by_Year_NOC[year] : athletes_by_Year_NOC[year][noc].append(x)
      else: athletes_by_Year_NOC[year][noc] = [x]
    else: athletes_by_Year_NOC[year] = {} ; athletes_by_Year_NOC[year][noc] = [x]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {} ; x = athletes_by_Year_NOC[year]
  for k in x:
    a = 0 ; b = 0 ; c = 0
    for e in x[k]:
      if e['Medal'] == 'Gold' : a+=1
      if e['Medal'] == 'Silver' : b+=1
      if e['Medal'] == 'Bronze' : c+=1
    medals[k] = (a,b,c)
  return medals
#======================================
def get_top_five(medals):
  topfive = [] ; x = sorted(medals.values())[::-1] ; d = [] ; y=[]
  for i in range(5):
    for k in medals: 
      if medals[k]==x[i] and k not in d: 
        y.append((k,x[i][0],x[i][1],x[i][2])) ; d.append(k)
    topfive.extend(sorted(y)) ; y = []
    if len(topfive)>5 : break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in athletes_by_Year_NOC:
    if start<=int(year)<=end:
      if NOC in athletes_by_Year_NOC[year]:
        m = get_medals_by_team(athletes_by_Year_NOC,year)[NOC]
        trend.append((year,m[0],m[1],m[2]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC: 
    d = athletes_by_Year_NOC[year]
    if NOC in d:
      for e in d[NOC]:
        a = e['Sport'] ; b = e['Medal']
        if b!='NA' : sports.add(a)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set() ; l = []
  if year in athletes_by_Year_NOC:
    for e in NOCs :
      if e in athletes_by_Year_NOC[year]:
        x = get_sports(athletes_by_Year_NOC,e,year) ; l.append(x)
      else:  return set()
    for i in range(len(l)-1):
      if i==0: sports = l[0]&l[1]
      else: sports = sports&l[i+1]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530377221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1234, 'const': 1211, 'code+const': 2445}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  if len(data) != 0:
    for i in range(1,len(data)):
      d = {}  
      for j in range(len(data[i])):
        d[data[0][j]] = data[i][j]
      Year,NOC = d['Year'],d['NOC']
      if Year not in athletes_by_Year_NOC:
        athletes_by_Year_NOC[Year] = {NOC:[d]}
      elif NOC not in athletes_by_Year_NOC[Year]:
        athletes_by_Year_NOC[Year][NOC] = [d]
      elif Year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[Year]:
        athletes_by_Year_NOC[Year][NOC].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for e in athletes_by_Year_NOC[year]:
       g,s,b = 0,0,0
       for i in range(len(athletes_by_Year_NOC[year][e])):
        if athletes_by_Year_NOC[year][e][i]["Medal"] == "Gold":
          g += 1
        if athletes_by_Year_NOC[year][e][i]["Medal"] == "Silver":
          s += 1
        if athletes_by_Year_NOC[year][e][i]["Medal"] == "Bronze":
          b += 1
       medals[e] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  if medals != {}:
    l,t = [],[]
    for k,v in medals.items():
      l.append([v,k])
    l.sort(reverse = True)
    for i in range(len(l)):
      l[i][0],l[i][1] = l[i][1],l[i][0]
    for i in range(0,5):  
      t.append([l[i][0],l[i][1]])
    for j in range(4,len(l)-1):
      if l[j][1] == l[j+1][1]:
        t.append([l[j+1][0],l[j+1][1]])
      else:
        break
    t.append(['',''])
    s = []
    for n in range(len(t)-1):
      if t[n][1] == t[n+1][1]:
        s.append(t[n])
      else:
        s.append(t[n])
        s.sort()
        for i in range(len(s)):
          topfive.append((s[i][0],)+s[i][1])
        s = []
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start, end+1):
    if str(y) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(y)]:
      m = get_medals_by_team(athletes_by_Year_NOC, str(y))
      trend.append((str(y),)+m[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for e in athletes_by_Year_NOC[year][NOC]:
      if e['Medal'] != 'NA':
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if list(NOCs)[0] in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][list(NOCs)[0]]:
        if e['Medal'] != 'NA':
          sports.add(e['Sport'])
    for i in range(1,len(list(NOCs))):
      s1 = set()
      if list(NOCs)[i] in athletes_by_Year_NOC[year]:
        for e in athletes_by_Year_NOC[year][list(NOCs)[i]]:
          if e['Medal'] != 'NA':
            s1.add(e['Sport'])
      else:
        s1 = set()
      sports = sports & s1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530382321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1228, 'const': 1785, 'code+const': 3013}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    header = data[0]
    for row in data[1:]:
        athlete_dict = {header[i]: row[i] for i in range(len(header))}
        year = athlete_dict['Year']
        noc = athlete_dict['NOC']
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if noc not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][noc] = []
        athletes_by_Year_NOC[year][noc].append(athlete_dict)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC in athletes_by_Year_NOC[year]:
        m_NOC  = [0, 0, 0]
        for athlete in athletes_by_Year_NOC[year][NOC]:
            medal = athlete.get('Medal', '').capitalize()
            if medal == 'Gold':
                m_NOC[0] += 1
            elif medal == 'Silver':
                m_NOC[1] += 1
            elif medal == 'Bronze':
                m_NOC[2] += 1
        medals[NOC] = tuple(m_NOC)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medal_tuples = [(n, medals[n][0], medals[n][1], medals[n][2]) for n in medals]
    medal_r = {}
    for t in medal_tuples:
        if t[1:] not in medal_r:
            medal_r[t[1:]] = []
        medal_r[t[1:]].append(t[0])
    sorted_ranks = sorted(medal_r.keys(), reverse=True)
    for rank in sorted_ranks:
        if len(topfive) >= 5:
            break
        for country in sorted(medal_r[rank]):
            topfive.append((country,) + rank)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    f_data = {str(year): athletes_by_Year_NOC[str(year)][NOC] 
                     for year in range(start, end+1) 
                     if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]}
    for year, athletes in f_data.items():
        gold = sum(1 for athlete in athletes if athlete['Medal'] == 'Gold')
        silver = sum(1 for athlete in athletes if athlete['Medal'] == 'Silver')
        bronze = sum(1 for athlete in athletes if athlete['Medal'] == 'Bronze')
        trend.append((year, gold, silver, bronze))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for athlete in athletes_by_Year_NOC[year][NOC]:
            if athlete['Medal'] != 'NA':
                sports.add(athlete['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    medals = {}
    for noc in NOCs:
        if year in athletes_by_Year_NOC and noc in athletes_by_Year_NOC[year]:
            for athlete in athletes_by_Year_NOC[year][noc]:
                sport = athlete['Sport']
                medal = athlete['Medal']
                if medal in ('Gold', 'Silver', 'Bronze'):
                    if sport not in medals:
                        medals[sport] = set()
                    medals[sport].add(noc)
    for sport, sport_n in medals.items():
        if len(sport_n) == len(NOCs):
            sports.add(sport)
    for noc in NOCs:
        for sport in sports.copy():
            sport_f = False
            if year in athletes_by_Year_NOC and noc in athletes_by_Year_NOC[year]:
                for athlete in athletes_by_Year_NOC[year][noc]:
                    if athlete['Sport'] == sport and athlete['Medal'] in ('Gold', 'Silver', 'Bronze'):
                        sport_f = True
                        break
            if not sport_f:
                sports.remove(sport)
                break
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530385221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 958, 'const': 1273, 'code+const': 2231}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1, len(data)):
    val = single_to_dict(data[0], data[i])
    year = val['Year']
    noc = val['NOC']
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    athletes_by_Year_NOC[year][noc].append(val)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for noc in athletes_by_Year_NOC[year]:
      res=[0,0,0]
      for val in athletes_by_Year_NOC[year][noc]:
        if val['Medal']=='Gold':
          res[0]+=1
        elif val['Medal']=='Silver':
          res[1]+=1
        elif val['Medal']=='Bronze':
          res[2]+=1
      medals[noc]=tuple(res)
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  topfivex=[]
  for noc in medals:
    topfivex.append((noc,-medals[noc][0],-medals[noc][1],-medals[noc][2]))
  topfivex=sorted(topfivex, key=lambda x: (x[1],x[2],x[3],x[0]))
  for val in topfivex[:5]:
    topfive.append((val[0],-val[1],-val[2],-val[3]))
  index=5
  while index<len(topfivex) and topfivex[index][1:]==topfivex[4][1:]:
    topfive.append((topfivex[index][0],-topfivex[index][1],-topfivex[index][2],-topfivex[index][3]))
    index+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    year=str(year)
    if year in athletes_by_Year_NOC:
      medals=get_medals_by_team(athletes_by_Year_NOC, year)
      if NOC in medals:
        trend.append((year, medals[NOC][0], medals[NOC][1], medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for val in athletes_by_Year_NOC[year][NOC]:
      if val['Medal'] != 'NA':
        sports.add(val['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  l=list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, l[0], year)
  for noc in l[1:]:
    sports=sports.intersection(get_sports(athletes_by_Year_NOC, noc, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def single_to_dict(names, single):
  res = {}
  for i in range(len(single)):
    res[names[i]] = single[i]
  return res

6530390321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 944, 'const': 1028, 'code+const': 1972}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    to_append = {}
    topic = data[0]
    data = data[1::]
    for i in data :
        for j in range(len(topic)) :
            to_append[topic[j]] = i[j]
        if not(i[9] in athletes_by_Year_NOC) :
            athletes_by_Year_NOC[i[9]] = {}
            if not(i[7] in athletes_by_Year_NOC[i[9]]) :
                athletes_by_Year_NOC[i[9]][i[7]] = [to_append]
                to_append = {}
            else :
                athletes_by_Year_NOC[i[9]][i[7]].append(to_append)
                to_append = {}
        else :
            if not(i[7] in athletes_by_Year_NOC[i[9]]) :
                athletes_by_Year_NOC[i[9]][i[7]] = [to_append]
                to_append = {}
            else :
                athletes_by_Year_NOC[i[9]][i[7]].append(to_append)
                to_append = {}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC :
        data = athletes_by_Year_NOC[year]
        for i in data :
            medals[i] = [0,0,0]
            data_ = data[i]
            for j in data_ :
                if j['Medal'] == 'Gold' :
                    medals[i][0] += 1
                elif j['Medal'] == 'Silver' :
                    medals[i][1] += 1
                elif j['Medal'] == 'Bronze' :
                    medals[i][2] += 1
            medals[i] = tuple(medals[i])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    to_append = {}
    for_check = []
    medals_sort = sorted(medals.values(),reverse=True)[:5]
    for i in medals_sort :
        for j in medals.keys() :
            if medals[j] == i :
                to_append[j] = (j,medals[j][0],medals[j][1],medals[j][2])
        keys = sorted(to_append.keys())
        for k in keys :
            if not(k in for_check) :
                topfive.append(to_append[k])
                for_check.append(k)
        to_append = {}
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,int(end+1)) :
        if str(i) in athletes_by_Year_NOC :
            if NOC in athletes_by_Year_NOC[str(i)] :
                data_ = get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
                trend.append((str(i),data_[0],data_[1],data_[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            data_ = athletes_by_Year_NOC[year][NOC]
            for i in data_ :
                if i['Medal'] != 'NA' :
                    if not(i['Sport'] in sports) :
                        sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sport_win = []
    for i in NOCs :
        sport_win.append(get_sports(athletes_by_Year_NOC, i, year))
    sports = sport_win[0]
    for i in sport_win :
        sports = sports.intersection(i)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530391021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1046, 'const': 1057, 'code+const': 2103}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    dic = {}
    list_alldic = []
    athletes_by_Year_NOC = {}
    NOC_ = athletes_by_Year_NOC
    for i in range(1,len(data)) :
        for e in range(15) : 
            dic[data[0][e]] = data[i][e]
        list_alldic.append(dic)
        dic = {}
    for i in list_alldic :
        if i['Year'] not in NOC_ :   # 2000
            NOC_[i['Year']] = {}
        if i['NOC'] not in NOC_[i['Year']]:  #i[Year] คือ เเต่ละประเทศ
            NOC_[i['Year']][i['NOC']] = []
        NOC_[i['Year']][i['NOC']].append(i)
    athletes_by_Year_NOC = NOC_
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    G = 0 ; S = 0 ; B = 0
    for i in athletes_by_Year_NOC :
        if i == year :
            NOCs = athletes_by_Year_NOC[i] # dicปีนั้น
            for e in NOCs : #eประเทศ
                for k in range(len(NOCs[e])) : #k list dic 
                    if NOCs[e][k]['Medal'] == 'Gold' :
                        G += 1
                    elif NOCs[e][k]['Medal'] == 'Silver' :
                        S += 1
                    elif NOCs[e][k]['Medal'] == 'Bronze' :
                        B += 1
                medals[e] = (G,S,B)
                G = 0 ; S = 0 ; B = 0
            break
    return medals
#======================================
def get_top_five(medals):
    L = [] ; topfive = []
    for i,j in medals.items() : L.append([(-j[0],-j[1],-j[2]),i])
    L.sort()
    for i in range(len(L)) :
        if i < 5 :
            topfive.append((L[i][1],-L[i][0][0],-L[i][0][1],-L[i][0][2]))
        elif i > 4 :
            if L[i][0] == L[4][0] :
                topfive.append((L[i][1],-L[i][0][0],-L[i][0][1],-L[i][0][2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1) :
        if str(year) in athletes_by_Year_NOC :
            if NOC in athletes_by_Year_NOC[str(year)] :
                c = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC] #(G,S,B)
                trend.append((str(year),c[0],c[1],c[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            if get_medals_by_team(athletes_by_Year_NOC, year)[NOC] != (0,0,0) :
                for i in range(len(athletes_by_Year_NOC[year][NOC])) :
                    if athletes_by_Year_NOC[year][NOC][i]['Medal'] != 'NA' :
                        s = athletes_by_Year_NOC[year][NOC][i]['Sport']
                        sports.add(s)           
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    c = 0 
    for NOC in NOCs :
        if c == 0 :
            s = get_sports(athletes_by_Year_NOC, NOC, year)
            sports.update(s)
            c = 1
        else :
            s = get_sports(athletes_by_Year_NOC, NOC, year)    
            sports = sports & s     
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530396121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1016, 'const': 1157, 'code+const': 2173}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      res = {}
      for v in range(len(data[i])):
          res[data[0][v]] = data[i][v]
      if data[i][9] not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[data[i][9]] = {}
      if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
          athletes_by_Year_NOC[data[i][9]][data[i][7]] = [res]
      else :
          athletes_by_Year_NOC[data[i][9]][data[i][7]].append(res)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    if athletes_by_Year_NOC[year] != {}:
      for k,v in athletes_by_Year_NOC[year].items():
          summ = [0,0,0]
          for e in v:
              if e["Medal"] == "Gold":
                  summ[0] += 1
              elif e["Medal"] == "Silver":
                  summ[1] += 1
              elif e["Medal"] == "Bronze":
                  summ[2] += 1
          medals[k] = tuple(summ)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  chcking = []
  tier = {}
  if medals != {} :
    for k,v in medals.items():
        if v not in chcking:
            chcking.append(v)
        if v not in tier:
            tier[v] = [k]
        else:
            tier[v].append(k)
    chcking.sort()
    chck = chcking[::-1]
    for i in range(5):
        d = tier[chck[i]]
        d.sort()
        for e in d:
            topfive.append((e,)+chck[i])
        if len(topfive) >= 5:
            break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
      if str(i) in athletes_by_Year_NOC:
          if NOC in athletes_by_Year_NOC[str(i)]:
              d = athletes_by_Year_NOC[str(i)][NOC]
              summ = [0,0,0]
              for e in d:
                  if e["Medal"] == "Gold":
                      summ[0] += 1
                  elif e["Medal"] == "Silver":
                      summ[1] += 1
                  elif e["Medal"] == "Bronze":
                      summ[2] += 1
              trend.append((str(i),)+tuple(summ))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
          d = athletes_by_Year_NOC[year][NOC]
          for e in d:
              if e["Medal"] != "NA":
                  if e["Sport"]not in sports:
                      sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  ll = []
  for e in NOCs:
      c = get_sports(athletes_by_Year_NOC, e, year)
      ll.append(c)
  for e in ll:
      sports = sports | e
  for e in ll:
      sports = sports & e
      if sports == set(): break
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530401621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1436, 'const': 1417, 'code+const': 2853}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    l = data[0]
    i1 = l.index('Year')
    i2 = l.index('NOC')
    for a in range(1,len(data)):
        lda = data[a]
        di = athletes_by_Year_NOC
        dv = {}
        for b in range(0,15):
            dv[l[b]] = lda[b]
        if lda[i1] not in di:
            di[lda[i1]] = {}
            di[lda[i1]][lda[i2]] = []
            di[lda[i1]][lda[i2]].append(dv)
        elif lda[i1] in di:
            if lda[i2] in di[lda[i1]]:
                di[lda[i1]][lda[i2]].append(dv)
            else:
                di[lda[i1]][lda[i2]] = []
                di[lda[i1]][lda[i2]].append(dv)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    di = athletes_by_Year_NOC[year]
    for a in di:
        g = 0
        s = 0
        b = 0
        l = di[a]
        for c in l:
            if c['Medal'] == 'Gold':
                g += 1
            elif c['Medal'] == 'Silver':
                s += 1
            elif c['Medal'] == 'Bronze':
                b += 1
        medals[a] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    l1 = []
    for a in medals:
        l = []
        l += list(medals[a])
        l.append(a)
        l1.append(l)
    l1.sort(reverse=True)
    l2 = []
    l3 = []
    i = 0
    for b in range(len(l1)):
        if i < 5:
            if b != len(l1)-1 and l1[b][0:3] == l1[b+1][0:3]:
                l2.append(l1[b])
            elif b != len(l1)-1 and l1[b][0:3] != l1[b+1][0:3] and len(l2) != 0:
                l2.append(l1[b])
                l2.sort()
                l3 += l2
                i += len(l2)
                l2 = []
            elif b == len(l1)-1 and l1[b-1][0:3] == l1[b][0:3]:
                l2.append(l1[b])
                l2.sort()
                l3 += l2
                i += len(l2)
                l2 = []
            else:
                l3.append(l1[b])
                i += 1
        else: break
    for c in l3:
        c.insert(0,c[3])
        c.pop(4)
        topfive.append(tuple(c))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for a in athletes_by_Year_NOC:
        if start <= int(a) <= end and NOC in athletes_by_Year_NOC[a]:
            ld = athletes_by_Year_NOC[a][NOC]
            g = 0
            s = 0
            b = 0
            for c in ld:
                if c['Medal'] == 'Gold':
                    g += 1
                elif c['Medal'] == 'Silver':
                    s += 1
                elif c['Medal'] == 'Bronze':
                    b += 1
            trend.append((a,g,s,b))
        else: pass
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        ld = athletes_by_Year_NOC[year][NOC]
        for a in ld:
            if a['Medal'] != 'NA':
                sports.add(a['Sport'])
            else: pass
    else: pass
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    i = 0
    if year in athletes_by_Year_NOC:
        NOC_set = set()
        for a in athletes_by_Year_NOC[year]:
            NOC_set.add(a)
        if NOC_set.intersection(NOCs) == NOCs:
            di = {}
            for b in tuple(NOCs):
                lst = athletes_by_Year_NOC[year][b]
                di[b] = set()
                for c in lst:
                    if c['Medal'] != 'NA':
                        di[b].add(c['Sport'])
                    else: pass
            for d in di:
                if sports == set() and i == 0:
                    sports = sports.union(di[d])
                    i += 1
                else:
                    sports = sports.intersection(di[d])   
        else: pass 
    else: pass
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530403921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1074, 'const': 1167, 'code+const': 2241}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1:]:
    if i[9] in athletes_by_Year_NOC:
      if i[7] in athletes_by_Year_NOC[i[9]]:
        athletes_by_Year_NOC[i[9]][i[7]].append(dict(zip(data[0], i)))
      else:
        athletes_by_Year_NOC[i[9]][i[7]] = [dict(zip(data[0], i))]
    else:
      athletes_by_Year_NOC[i[9]] = {i[7]:[dict(zip(data[0], i))]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]: 
    medals[i] = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
    for j in athletes_by_Year_NOC[year][i]: 
      if j['Medal'] == 'Gold':
        medals[i]['Gold'] += 1
      elif j['Medal'] == 'Silver':
        medals[i]['Silver'] += 1
      elif j['Medal'] == 'Bronze':
        medals[i]['Bronze'] += 1
    medals[i] = (medals[i]['Gold'], medals[i]['Silver'], medals[i]['Bronze'])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sortedmedals = []
  for i in medals:
    sortedmedals.append([-medals[i][0],-medals[i][1],-medals[i][2],i])
  sortedmedals.sort()
  prev = [sortedmedals[0][0], sortedmedals[0][1], sortedmedals[0][2]]
  topfive.append((sortedmedals[0][3],-sortedmedals[0][0], -sortedmedals[0][1], -sortedmedals[0][2]))
  count = 1
  for i in sortedmedals[1:]:
    if count == 4:
      prev = [i[0],i[1],i[2]]
    if count >=5 and not (i[0] == prev[0] and i[1] == prev[1] and i[2] == prev[2]):
      break
    topfive.append((i[3],-i[0],-i[1],-i[2]))
    count += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in athletes_by_Year_NOC:
    if start<= int(i) <=end: 
      x=get_medals_by_team(athletes_by_Year_NOC, i)
      if NOC in x:
        trend.append((i, x[NOC][0],x[NOC][1],x[NOC][2]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
   if NOC in athletes_by_Year_NOC[year]:
    for i  in athletes_by_Year_NOC[year][NOC]:
      if i['Medal'] != 'NA':
       sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    x =0
    for i in NOCs:
      if i in athletes_by_Year_NOC[year]:
        NOCSport = set()
        for i  in athletes_by_Year_NOC[year][i]:
          if i['Medal'] != 'NA':
            NOCSport.add(i['Sport'])
        if x == 0:
          sports = sports.union(NOCSport)
        else:
          sports = sports.intersection(NOCSport)
      x+=1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530409721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 744, 'const': 784, 'code+const': 1528}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for e in data[1:]:
    if e[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[e[9]] = {}
    if e[7] not in athletes_by_Year_NOC[e[9]]:
      athletes_by_Year_NOC[e[9]][e[7]] = []
    a = {}
    for i in range(len(e)):
      a[data[0][i]] = e[i]
    athletes_by_Year_NOC[e[9]][e[7]].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if str(year) in athletes_by_Year_NOC:
    a = athletes_by_Year_NOC[year]
    for t in a:
      g = 0
      s = 0
      b = 0
      for k in a[t]:
        if k['Medal']=='Gold':
          g+=1
        elif k['Medal']=='Silver':
          s+=1
        elif k['Medal']=='Bronze':
          b+=1
      medals[t]=(g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  m = {}
  for a,p in medals.items():
    if p not in m:
      m[p]=[]
    m[p].append(a)
  for k in sorted(m)[::-1]:
    if len(topfive)>=5:
      break
    for n in sorted(m[k]):
      topfive.append((n,)+k)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start,end+1):
    if str(y) in athletes_by_Year_NOC:
      if NOC in get_medals_by_team(athletes_by_Year_NOC, str(y)):
        trend.append((str(y),)+get_medals_by_team(athletes_by_Year_NOC, str(y))[NOC])                                                                                                      
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for t in athletes_by_Year_NOC[year][NOC]:
      if t['Medal'] != 'NA':
        sports.add(t['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s = []
  for a in NOCs:
    s.append(get_sports(athletes_by_Year_NOC, a, year))
  sports = s[0]
  for k in range(1, len(s)):
    sports = sports & s[k]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530411921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 976, 'const': 1142, 'code+const': 2118}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  a = {}
  for i in range(1,len(data)):
    data_dic = {}
    for j in range(15):
      data_dic[data[0][j]] = data[i][j]
    if(data[i][9] in a):
      if(data[i][7] in a[data[i][9]]):
        a[data[i][9]][data[i][7]].append(data_dic) 
      else:
        a[data[i][9]][data[i][7]] = [data_dic]
    else:
      a[data[i][9]] = {}
      a[data[i][9]][data[i][7]] = [data_dic]
  return a
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year]:
    Medal = {}
    Medal['G'] = 0
    Medal['S'] = 0
    Medal['B'] = 0
    for d in athletes_by_Year_NOC[year][NOC]:
      if(d['Medal'][0] == 'G'):
        Medal['G'] = Medal['G'] + 1
      if(d['Medal'][0] == 'S'):
        Medal['S'] = Medal['S'] + 1
      if(d['Medal'][0] == 'B'):
        Medal['B'] = Medal['B'] + 1
    medals[NOC] = (Medal['G'] , Medal['S'] , Medal['B'])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  data_sorted = sorted(medals.items(), key=lambda x: (-x[1][0],-x[1][1],-x[1][2],x[0]))
  for i in range(len(data_sorted)):
    a = data_sorted[i]
    if i<=4 or a[1]==data_sorted[4][1]:
      topfive.append( (a[0],a[1][0],a[1][1],a[1][2]) )
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year] and start<=int(year)<=end:
      k= get_medals_by_team(athletes_by_Year_NOC, year)[NOC]
      trend.append( (year,k[0],k[1],k[2]) )
  return sorted(trend)
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for d in athletes_by_Year_NOC[year][NOC]:
        if(d['Medal'][0] == 'G'):
          sports.add(d['Sport'])
        if(d['Medal'][0] == 'S'):
          sports.add(d['Sport'])
        if(d['Medal'][0] == 'B'):
          sports.add(d['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  temp = []
  for d in NOCs:
    temp.append(get_sports(athletes_by_Year_NOC, d, year))
  sports = temp[0]
  for i in range(len(temp)):
    sports &= temp[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530413121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1122, 'const': 1181, 'code+const': 2303}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  L = []
  for i in range(1, len(data)):
    d = {}
    for j in range(15):
      d[data[0][j]] = data[i][j]
    L.append(d)
  for i in range(2000,2017,2):
    noc = {}
    for e in L:
      if e["Year"] == str(i):
          if e["NOC"] not in noc:
            noc[e["NOC"]] = [e]
          else:
            noc[e["NOC"]].append(e)
    athletes_by_Year_NOC[str(i)] = noc
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year]:
    gold = 0; silver = 0; bronze = 0
    for e in athletes_by_Year_NOC[year][NOC]:
      if e["Medal"] == "Gold":
        gold += 1
      elif e["Medal"] == "Silver":
        silver += 1
      elif e["Medal"] == "Bronze":
        bronze += 1
    medals[NOC] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  L = []
  for NOC, medal in medals.items():
    L.append((medal, NOC))
  L.sort(reverse = True)
  length = 5
  for i in range(4,len(L) - 1):
    if L[i][0] == L[i + 1][0]:
      length += 1
    else:
      break
  medals_NOC_5 = L[:length + 1]
  NOC_5 = []
  repeat = []
  for i in range(len(medals_NOC_5) - 1):
    if medals_NOC_5[i][0] == medals_NOC_5[i + 1][0]:
      repeat.append(medals_NOC_5[i][1])
      repeat.append(medals_NOC_5[i + 1][1])
    else:
      if repeat != []:
        repeat = set(repeat)
        repeat = list(repeat)
        repeat.sort()
        for e in repeat:
          NOC_5.append(e)
        repeat = []
      else:
        NOC_5.append(medals_NOC_5[i][1])
  if repeat != []:
    repeat = set(repeat)
    repeat = list(repeat)
    repeat.sort()
    for e in repeat:
      NOC_5.append(e)
  for NOC in NOC_5:
    topfive.append((NOC, medals[NOC][0], medals[NOC][1], medals[NOC][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start % 2 == 1:
    s = start + 1
  else:
    s = start
  for i in range(s,end + 1,2):
    if str(i) in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[str(i)]:
        d = get_medals_by_team(athletes_by_Year_NOC, str(i))
        trend.append((str(i), d[NOC][0], d[NOC][1], d[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      L = athletes_by_Year_NOC[year][NOC]
      for e in L:
        if e["Medal"] != "NA":
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  if len(NOCs) >= 2:
    L_NOCs = list(NOCs)
    s1 = get_sports(athletes_by_Year_NOC, L_NOCs[0], year)
    for i in range(1, len(NOCs)):
      s2 = get_sports(athletes_by_Year_NOC, L_NOCs[i], year)
      if i == 1:
        sports = s1 & s2
      else:
        sports = sports & s2
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530414821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1050, 'const': 980, 'code+const': 2030}
check_import({'allowable': ['math', 'csv']}) deep: none
import csv
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)) :
      f = {}
      for j in range(len(data[0])) :
            f[data[0][j]] = data[i][j]
      if data[i][9] not in athletes_by_Year_NOC :
          athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[f]}
      else :
         if data[i][7] in athletes_by_Year_NOC[data[i][9]] :
             (athletes_by_Year_NOC[data[i][9]][data[i][7]]).append(f)
         else :
            athletes_by_Year_NOC[data[i][9]][data[i][7]] = [f]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year] :
      b,s,g = 0,0,0
      for l in athletes_by_Year_NOC[year][NOC] :
          if l['Medal'] == 'Bronze' :
              b += 1
          elif l['Medal'] == 'Silver' :
              s += 1
          elif l['Medal'] == 'Gold' :
              g += 1
      medals[NOC] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  score = {}
  c = 0
  for NOC in medals :
      if medals[NOC] not in score :
          score[medals[NOC]] = [NOC]
      else :
          score[medals[NOC]].append(NOC)
  x = [[i,score[i]] for i in score]
  for j in range(len(x)) :
      x[j][1] = sorted(x[j][1])
  x = sorted(x)[::-1]
  for i in range(len(x)) :
      if c < 5 :
          for j in range(len(x[i][1])) :
              topfive.append((x[i][1][j],x[i][0][0],x[i][0][1],x[i][0][2]))
          c += len(x[i][1])
      else :
          break
  return topfive 
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1) :
      if str(i) in athletes_by_Year_NOC :
          m = get_medals_by_team(athletes_by_Year_NOC, str(i))
          if NOC in m :
              trend.append((str(i),m[NOC][0],m[NOC][1],m[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] : 
      m = athletes_by_Year_NOC[year][NOC]
      for player in m :
          if player['Medal'] != 'NA' :
              sports.add(player['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sport1 = set()
  t = True
  for i in range(len(NOCs)) :
      if year in athletes_by_Year_NOC and sorted(NOCs)[i] in athletes_by_Year_NOC[year] :
            g = get_sports(athletes_by_Year_NOC, sorted(NOCs)[i], year)
            if t :
                sport1 = g
                t = False
            else :
                sport1 = sport1.intersection(g)
      else :
          sport1 = set()
          break
  sports = sport1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530423421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1678, 'const': 2272, 'code+const': 3950}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(len(data[0])) :
        if data[0][i] == 'ID' :
            i_ID = i
        elif data[0][i] == 'Name' :
            i_Name = i
        elif data[0][i] == 'Sex' :
            i_Sex = i
        elif data[0][i] == 'Age' :
            i_Age = i
        elif data[0][i] == 'Height' :
            i_Height = i
        elif data[0][i] == 'Weight' :
            i_Weight = i
        elif data[0][i] == 'Team' :
            i_Team = i
        elif data[0][i] == 'NOC' :
            i_NOC = i
        elif data[0][i] == 'Games' :
            i_Games = i
        elif data[0][i] == 'Year' :
            i_Year = i
        elif data[0][i] == 'Season' :
            i_Season = i
        elif data[0][i] == 'City' :
            i_City = i
        elif data[0][i] == 'Sport' :
            i_Sport = i
        elif data[0][i] == 'Event' :
            i_Event = i
        elif data[0][i] == 'Medal' :
            i_Medal = i
    for each_e in data[1:] :
        if each_e[i_Year] not in athletes_by_Year_NOC :
            athletes_by_Year_NOC[each_e[i_Year]] = {each_e[i_NOC] : [{'ID':each_e[i_ID], 'Name':each_e[i_Name],                                                                    'Sex':each_e[i_Sex], 'Age':each_e[i_Age],                                                                    'Height':each_e[i_Height], 'Weight':each_e[i_Weight],                                                                    'Team':each_e[i_Team], 'NOC':each_e[i_NOC],                                                                    'Games':each_e[i_Games], 'Year':each_e[i_Year],                                                                    'Season':each_e[i_Season], 'City':each_e[i_City],                                                                    'Sport':each_e[i_Sport], 'Event':each_e[i_Event],                                                                    'Medal':each_e[i_Medal]}]}
        elif each_e[i_NOC] not in athletes_by_Year_NOC[each_e[i_Year]] :
            athletes_by_Year_NOC[each_e[i_Year]][each_e[i_NOC]] = [{'ID':each_e[i_ID], 'Name':each_e[i_Name],                                                                    'Sex':each_e[i_Sex], 'Age':each_e[i_Age],                                                                    'Height':each_e[i_Height], 'Weight':each_e[i_Weight],                                                                    'Team':each_e[i_Team], 'NOC':each_e[i_NOC],                                                                    'Games':each_e[i_Games], 'Year':each_e[i_Year],                                                                    'Season':each_e[i_Season], 'City':each_e[i_City],                                                                    'Sport':each_e[i_Sport], 'Event':each_e[i_Event],                                                                    'Medal':each_e[i_Medal]}]
        else :
            athletes_by_Year_NOC[each_e[i_Year]][each_e[i_NOC]].append({'ID':each_e[i_ID], 'Name':each_e[i_Name],                                                                    'Sex':each_e[i_Sex], 'Age':each_e[i_Age],                                                                    'Height':each_e[i_Height], 'Weight':each_e[i_Weight],                                                                    'Team':each_e[i_Team], 'NOC':each_e[i_NOC],                                                                    'Games':each_e[i_Games], 'Year':each_e[i_Year],                                                                    'Season':each_e[i_Season], 'City':each_e[i_City],                                                                    'Sport':each_e[i_Sport], 'Event':each_e[i_Event],                                                                    'Medal':each_e[i_Medal]})
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC :
        return medals
    for each_noc in athletes_by_Year_NOC[year] :
        if each_noc not in medals :
            medals[each_noc] = [0,0,0]
        for each_in_list in athletes_by_Year_NOC[year][each_noc] :
            if each_in_list['Medal'] == 'Gold' :
                medals[each_noc][0] += 1
            elif each_in_list['Medal'] == 'Silver' :
                medals[each_noc][1] += 1
            elif each_in_list['Medal'] == 'Bronze' :
                medals[each_noc][2] += 1
            elif each_in_list['Medal'] == 'NA' :
                continue
    for noc in medals :
        medals[noc] = tuple(medals[noc])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    d_vk = {}
    for key in medals :
        if medals[key] not in d_vk :
            d_vk[medals[key]] = [key]
        else :
            d_vk[medals[key]].append(key)
    s_d_vk = sorted(d_vk)[::-1]
    if s_d_vk == {} :
        return topfive
    for e in s_d_vk[:5] :
        if len(d_vk[e]) > 1 :
            name = sorted(d_vk[e])
            for i in range(len(name)) :
                topfive.append((name[i], e[0], e[1], e[2]))
        else :
            topfive.append((d_vk[e][0], e[0], e[1], e[2]))
        if len(topfive) >= 5 :
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1) :
        if str(y) in athletes_by_Year_NOC :
            list_to_tuple = [str(y),0,0,0]
            if NOC not in athletes_by_Year_NOC[str(y)] :
              continue
            for each_in_list in athletes_by_Year_NOC[str(y)][NOC] :
                if each_in_list['Medal'] == 'Gold' :
                    list_to_tuple[1] += 1
                elif each_in_list['Medal'] == 'Silver' :
                    list_to_tuple[2] += 1
                elif each_in_list['Medal'] == 'Bronze' :
                    list_to_tuple[3] += 1
                elif each_in_list['Medal'] == 'NA' :
                    continue
            trend.append(tuple(list_to_tuple))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC :
        return sports
    if NOC not in athletes_by_Year_NOC[year] :
        return sports
    for each_in_list in athletes_by_Year_NOC[year][NOC] :
        if each_in_list['Medal'] in ['Gold', 'Silver', 'Bronze'] :
            sports.add(each_in_list['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    list_of_set_sport = []
    for e in NOCs :
        list_of_set_sport.append(get_sports(athletes_by_Year_NOC, e, year))
    intersect_set = list_of_set_sport[0]
    for i in range(1,len(list_of_set_sport)) :
        intersect_set = intersect_set & list_of_set_sport[i]
    if len(intersect_set) != 0 :
        sports = intersect_set
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530426321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 998, 'const': 1080, 'code+const': 2078}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data[1:]:
        y = e[9]
        n = e[7]
        if y not in athletes_by_Year_NOC: athletes_by_Year_NOC[y]={}
        if n not in athletes_by_Year_NOC[y]: athletes_by_Year_NOC[y][n]=[]
        new ={}
        for k in range(len(data[0])):
            new[data[0][k]]=e[k]
        athletes_by_Year_NOC[y][n].append(new)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    medal = [0,0,0]
    x = athletes_by_Year_NOC[year]
    for e in x:
        c =x[e]
        for i in c:
            if i['Medal']=='Gold': medal[0]+=1
            if i['Medal']=='Silver': medal[1]+=1
            if i['Medal']=='Bronze': medal[2]+=1
        medals[e]=tuple(medal)
        medal =[0,0,0]
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    top=[]
    x=sorted(medals.items(),key =select_values,reverse=True)
    nx=dict(x)
    for i in nx:
        top.append(tuple([i]+list(nx[i])))
    k=[top[0]]
    e=top[0][1:]
    for i in range(1,len(top)): 
        if top[i][1:] == e:
            k +=(top[i],)
            if i == len(top)-1:
                topfive +=sorted(k)
        else:
            topfive +=sorted(k)
            e = top[i][1:]
            k=[top[i]]
        if len(topfive)>=5:
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    s= start
    e= end
    if start%2 !=0:s =start+1
    if end%2!=0:e =end-1
    info=[]
    for year in range(s,e+1):
        if year%2==0:
            info.append(str(year))
            if str(year) in athletes_by_Year_NOC:
                if NOC  in get_medals_by_team(athletes_by_Year_NOC, str(year)):
                    info.extend(list(get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]))
                    trend.append(tuple(info))
                info=[]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[str(year)]:
            for i in range(len(athletes_by_Year_NOC[str(year)][NOC])):
                e=athletes_by_Year_NOC[str(year)][NOC][i]
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    its=[]
    for k in NOCs:
        sport=get_sports(athletes_by_Year_NOC, k, year)
        its.append(sport)
    sports =its[0]
    for i in its[1:]:
        sports=sports.intersection(i)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def select_values(x):
    return x[1]

6530428621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 810, 'const': 916, 'code+const': 1726}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
        year = data[i][9]
        country = data[i][7]
        person = {}
        for j in range(len(data[0])):
            person[data[0][j]] = data[i][j]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if country not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][country] = []
        athletes_by_Year_NOC[year][country].append(person)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    noc = athletes_by_Year_NOC[year]
    for i in noc:
          gold = 0
          silver = 0
          bronze = 0
          for j in noc[i]:
              if j['Medal'] == 'Gold':gold += 1
              if j['Medal'] == 'Silver':silver += 1
              if j['Medal'] == 'Bronze':bronze += 1
          medals[i] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  score_country = {}
  for country in medals:
        if medals[country] not in score_country:
            score_country[medals[country]] = []
        score_country[medals[country]].append(country)
  number = 0
  top = sorted(score_country)[::-1]
  for score in top:
        if number >=5:
            break
        wait = []
        for j in score_country[score]:
            wait.append((j, score[0], score[1], score[2]))
        wait.sort()
        topfive += wait
        number += len(score_country[score])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end+1):
        if str(i) in athletes_by_Year_NOC:
            by_year = get_medals_by_team(athletes_by_Year_NOC, str(i))
            if NOC in by_year:
                by_country = by_year[NOC]
                trend.append((str(i), by_country[0], by_country[1], by_country[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if str(year) in athletes_by_Year_NOC:
        by_year = athletes_by_Year_NOC[str(year)]
        if NOC in by_year:
            by_country = by_year[NOC]
            for i in range(len(by_country)):
                if by_country[i]['Medal'] != 'NA':
                    sports.add(by_country[i]['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  get = False
  for i in NOCs:
        if not get:
            sports = get_sports(athletes_by_Year_NOC, i, year)
            get = True
        sports = sports & get_sports(athletes_by_Year_NOC, i, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530432021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1038, 'const': 1174, 'code+const': 2212}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data_use = data[1:]
  for buildy in data_use :
    usedict = {}
    if not(buildy[9] in athletes_by_Year_NOC) :
      athletes_by_Year_NOC[buildy[9]] = {}
    if not(buildy[7] in athletes_by_Year_NOC[buildy[9]]) :
      athletes_by_Year_NOC[buildy[9]][buildy[7]] = []
    for i in range(15) :
      usedict[data[0][i]] = buildy[i]
    athletes_by_Year_NOC[buildy[9]][buildy[7]].append(usedict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC :
    for i in athletes_by_Year_NOC[year] :
      Gold = 0
      Silver = 0
      Bronze = 0
      for j in athletes_by_Year_NOC[year][i] :
        if j['Medal'] == 'Gold' : Gold += 1
        elif j['Medal'] == 'Silver' : Silver += 1
        elif j['Medal'] == 'Bronze' : Bronze += 1
      medals[i] = (Gold,Silver,Bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  ans = []
  for key in medals :
    a,b,c = medals[key]
    ans.append([-a,-b,-c,key])
  ans.sort()
  if len(ans) > 5 :
    i = 0
    while True :
      a,b,c,noc = ans[i]
      if i >= 4 :
        if ans[i][:-1] == ans[i+1][:-1] :
          pass
        else : 
          topfive.append((noc,-a,-b,-c))
          break
      topfive.append((noc,-a,-b,-c))
      i += 1
  elif len(ans) <= 5 :
    for j in range(len(ans)) :
      a,b,c,noc = ans[j]
      topfive.append((noc,-a,-b,-c))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1) :
    if str(year) in athletes_by_Year_NOC :
      gold = 0
      silver = 0
      bronze = 0
      if NOC in athletes_by_Year_NOC[str(year)] :
        for i in athletes_by_Year_NOC[str(year)][NOC] :
          if i['Medal'] == 'Gold' : gold += 1
          elif i['Medal'] == 'Silver' : silver += 1
          elif i['Medal'] == 'Bronze' : bronze += 1
        trend.append((str(year),gold,silver,bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC] :
        if i['Medal'] in ['Gold','Silver','Bronze'] :
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  set1 = set()
  if year in athletes_by_Year_NOC :
    NOClst = [e for e in NOCs]
    if NOClst[0] in athletes_by_Year_NOC[year] :
      set1 = get_sports(athletes_by_Year_NOC, NOClst[0], year)
    for i in range(1,len(NOClst)) :
      if NOClst[i] in athletes_by_Year_NOC[year] :
        set1 = set1 & get_sports(athletes_by_Year_NOC, NOClst[i], year)
      else :
        set1 = set()
  sports = set1 
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530436621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 998, 'const': 1056, 'code+const': 2054}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  topic = ['ID','Name','Sex','Age','Height','Weight','Team','NOC','Games','Year','Season','City','Sport','Event','Medal']
  for e in data[1:]:
    if e[9] not in athletes_by_Year_NOC :
        athletes_by_Year_NOC[e[9]] = {}
    if e[7] not in athletes_by_Year_NOC[e[9]] :
        athletes_by_Year_NOC[e[9]][e[7]] = []
    persona = {}
    for i in range(len(e)):
        persona[topic[i]] = e[i]
    athletes_by_Year_NOC[e[9]][e[7]].append(persona)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for e in athletes_by_Year_NOC[year] : #{NOC:[],..}
        x = athletes_by_Year_NOC[year][e] #lst of dic all data in year,noc
        gold = 0
        silver = 0
        bronze =0
        for i in range(len(x)):
            if (x[i])['Medal'] == 'Gold':
                gold += 1
            elif (x[i])['Medal'] == 'Silver':
                silver += 1
            elif (x[i])['Medal'] == 'Bronze':
                bronze += 1
        medals[e] = (gold,silver,bronze)
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  x=[]
  for c in medals :
      g,s,b =medals[c]
      x.append([-g,-s,-b,c])
  y = (sorted(x))
  for e in y[:5:]:
      topfive.append((e[3] , -e[0], -e[1], -e[2] ))
  if len(y) > 5 :
    for i in range(5,len(y)):
        if (y[4])[0]==(y[i])[0] and (y[4])[1]==(y[i])[1] and (y[4])[2]==(y[i])[2] :
            topfive.append(((y[i])[3], -(y[4])[0],-(y[4])[1], -(y[4])[2] ))
        else:
          break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  start_new=start
  end_new=end
  if start%2==1:
    start_new +=1
  if end%2==1:
    end_new -=1
  for year in range(start_new,end_new+1):
    if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)] :
      g,s,b = (get_medals_by_team(athletes_by_Year_NOC, str(year)) )[NOC]
      trend.append((str(year),g,s,b))
    else:
      pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
    for y in (athletes_by_Year_NOC[year])[NOC] :
      if y['Medal'] != 'NA' :
        sports.add(y['Sport'])
  else :
    pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()   
  y= [get_sports(athletes_by_Year_NOC,x,year) for x in NOCs]
  sports = y[0]
  for i in range(1,len(y)):
    sports = sports&y[i]
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530441721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 788, 'const': 884, 'code+const': 1672}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)) :
    info = {}
    for c in range(len(data[0])) :
      info[data[0][c]] = data[i][c]
    NOC = data[i][7]
    year = data[i][9]
    if year in athletes_by_Year_NOC :
      if NOC not in athletes_by_Year_NOC[year] :
        athletes_by_Year_NOC[year][NOC] = [info]
      else :
        athletes_by_Year_NOC[year][NOC].append(info)
    else :
      athletes_by_Year_NOC[year] = {NOC:[info]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  inf_year = athletes_by_Year_NOC[year]
  for e in inf_year :
    gold = 0 ; silver = 0 ; bronze = 0
    for u in inf_year[e] :
      if u['Medal'] == 'Gold' :
        gold += 1
      elif u['Medal'] == 'Silver' :
        silver += 1
      elif u['Medal'] == 'Bronze' :
        bronze += 1
      medals[e] = (gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  overall = {}
  for k,v in medals.items():
    if v not in overall :
      overall[v] = [k]
    else :
      overall[v].append(k)
  y = sorted(overall,reverse = True)
  i = 0 ; a = 0
  if y != [] :
    while a < 5 :
      n = overall[y[i]]
      for c in sorted(n) :
        topfive.append((c,)+y[i])
        a += 1
      i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for k in range(start,end+1,1) :
    y = str(k)
    if y in athletes_by_Year_NOC :
      if NOC in athletes_by_Year_NOC[y] :
        trend.append((y,) + get_medals_by_team(athletes_by_Year_NOC, str(k))[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
    inf_year_NOC = athletes_by_Year_NOC[year][NOC]
    for e in inf_year_NOC :
      if e['Medal'] != 'NA' :
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  k = list()
  for e in NOCs :
    x = get_sports(athletes_by_Year_NOC, e, year)
    k.append(x)
  sports = k[0]
  for i in range(1,len(k)) :
    sports = sports.intersection(k[i])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6530443021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 948, 'const': 1088, 'code+const': 2036}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}; d = data[1::]; l = data[0]
    for i in d:
        yr = i[l.index('Year')]; n = i[l.index('NOC')]
        c = [{l[k]:i[k] for k in range(len(l))}]
        if yr not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[yr] = {}
            athletes_by_Year_NOC[yr][n] = c
        else:
            if n not in athletes_by_Year_NOC[yr]:
                athletes_by_Year_NOC[yr][n] = c
            else:
                athletes_by_Year_NOC[yr][n] += c
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        c = athletes_by_Year_NOC[year]
        for i in c:
            g = 0; s = 0; b = 0
            for e in c[i]:
                if e['Medal'] == 'Gold': g += 1
                elif e['Medal'] == 'Silver': s += 1
                elif e['Medal'] == 'Bronze': b += 1
            medals[i] = (g, s, b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []; m = {}; c = 0
    for i in medals:
        if medals[i] not in m: m[medals[i]] = [i]
        else: m[medals[i]] += [i]
    for i in sorted(m, reverse=True)[:5]:
        c += len(m[i])
        for e in sorted(m[i]):
            topfive += [(e,) +  i]
        if c >= 5: break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []; s = start; e = end
    if int(start)%2 != 0: s = int(start) + 1
    if int(end)%2 != 0: e = int(end) - 1
    for i in sorted(athletes_by_Year_NOC):
        if s <= int(i) <= e:
            g = get_medals_by_team(athletes_by_Year_NOC, str(i))
            if NOC in g:
                trend += [(str(i),) + g[NOC]]
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for i in athletes_by_Year_NOC[year][NOC]:
                if i['Medal'] != 'NA': sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set(); n = {}
    if year in athletes_by_Year_NOC:
        for e in NOCs:
            if e in athletes_by_Year_NOC[year]: n[e] = {i['Sport'] for i in athletes_by_Year_NOC[year][e] if i['Medal'] != 'NA'}
            else: n[e] = set()
    c = n[list(NOCs)[0]]
    for i in n: c = c & n[i]
    sports = c
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532006821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 922, 'const': 1033, 'code+const': 1955}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  keys = data[0]
  for k in range(1, len(data)):
    athletes = {}
    values = data[k]
    for i in range(len(keys)):
      athletes[keys[i]] = values[i]
    Year = athletes['Year']
    NOC = athletes['NOC']
    if Year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[Year] = {}
    if NOC not in athletes_by_Year_NOC[Year]:
      athletes_by_Year_NOC[Year][NOC] = []
    athletes_by_Year_NOC[Year][NOC].append(athletes)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC :
    return medals
  for key in athletes_by_Year_NOC[year].keys():
    medal = {'Gold' : 0, 'Silver' : 0, 'Bronze' : 0}
    for athletes in athletes_by_Year_NOC[year][key]:
      if athletes['Medal'] in medal:
        medal[athletes['Medal']] += 1
    medals[key] = (medal['Gold'], medal['Silver'], medal['Bronze'])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  cmedal = []
  for key in medals :
    gold = medals[key][0]
    silver = medals[key][1]
    bronze = medals[key][2]
    NOC = key
    e = (-gold, -silver, -bronze, NOC)
    cmedal.append(e)
  cmedal.sort()
  for e in cmedal[:5]:
    gold = -e[0]
    silver = -e[1]
    bronze = -e[2]
    NOC = e[3]
    topfive.append((NOC, gold, silver, bronze))
  for e in cmedal[5:]:
    gold = -e[0]
    silver = -e[1]
    bronze = -e[2]
    NOC = e[3]
    if topfive[4][1] == gold and topfive[4][2] == silver and topfive[4][3] == bronze :
      topfive.append((NOC, gold, silver, bronze))
    else :
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for  k in range (start, end + 1) :
    year = str(k)
    if year not in athletes_by_Year_NOC :
      continue
    medals = get_medals_by_team(athletes_by_Year_NOC, year)
    if NOC in medals :
      gold = medals[NOC][0]
      silver = medals[NOC][1]
      bronze = medals[NOC][2]
      trend.append((year, gold, silver, bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for k in athletes_by_Year_NOC[year][NOC]:
        if k['Medal'] != 'NA' :
          sports.add(k['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  asport = list()
  for k in NOCs :
    if get_sports(athletes_by_Year_NOC, k, year) != set() :
      s = get_sports(athletes_by_Year_NOC, k, year)
      asport.append(s)
  if len(asport) > 1:
    sports = set.intersection(*asport)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532007421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 3178, 'const': 21150, 'code+const': 24328}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  head = data[0]
  for i in range(1, len(data)):
    athlete = dict(zip(head, data[i]))
    year = athlete['Year']
    NOC = athlete['NOC']
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    athletes_by_Year_NOC[year][NOC].append(athlete)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals_by_team = {}
  if year not in athletes_by_Year_NOC: return medals_by_team
  for NOC, athletes in athletes_by_Year_NOC[year].items():
    medals = {'Gold': 0, 'Silver': 0, 'Bronze': 0}
    for athlete in athletes:
      medal = athlete['Medal']
      if medal in medals:
        medals[medal] += 1
    medals_by_team[NOC] = (
        medals['Gold'], 
        medals['Silver'], 
        medals['Bronze']
    )
  return medals_by_team
#======================================
def get_top_five(medals):
  topfive = []
  rank = []
  for NOC, medal in medals.items():
    gold, silver, bronze = medal
    rank.append((-gold, -silver, -bronze, NOC))
  rank.sort()
  for each_NOC in rank[:5]:
    gold, silver, bronze, NOC = each_NOC
    topfive.append((NOC, -gold, -silver, -bronze))
  for each_NOC in rank[5:]:
    gold, silver, bronze, NOC = each_NOC
    _, last_gold, last_silver, last_bronze = topfive[-1]
    if -gold == last_gold and      -silver == last_silver and      -bronze == last_bronze:
      topfive.append((NOC, -gold, -silver, -bronze))
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in [str(year) for year in range(start, end + 1)]:
    if year not in athletes_by_Year_NOC: 
      continue
    medals = get_medals_by_team(athletes_by_Year_NOC, year)
    if NOC in medals:
      trend.append((year, *medals[NOC]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC: return sports
  for NOCs in athletes_by_Year_NOC[year]:
    if NOC not in NOCs: continue
    athletes = athletes_by_Year_NOC[year][NOC]
    for athlete in athletes:
      if athlete['Medal'] != 'NA':
        sports.add(athlete['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  if len(NOCs) == 0:
    return set()
  NOC = next(iter(NOCs))
  if len(NOCs) == 1:
    return get_sports(athletes_by_Year_NOC, NOC, year)
  else:
    return        get_sports(athletes_by_Year_NOC, NOC, year) &        get_common_sports(athletes_by_Year_NOC, NOCs - {NOC}, year)
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def test_convert_to_dict():
  d = convert_to_dict(data)
  print(len(d['2000']['THA']))
  for i in range(5):
      print(d['2000']['THA'][i])
  print(
      '#1 ',
      len(d['2000']['THA']) == 68,
      d['2000']['THA'][0] == {'ID': '21596', 'Name': 'Somchai Cimlum', 'Sex': 'M', 'Age': '24', 'Height': '179', 'Weight': '73', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Boxing', 'Event': "Boxing Men's Middleweight", 'Medal': 'NA'},
      d['2000']['THA'][1] == {'ID': '27067', 'Name': 'Saipin Dejsaeng', 'Sex': 'F', 'Age': '23', 'Height': '159', 'Weight': '62', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Weightlifting', 'Event': "Weightlifting Women's Middleweight", 'Medal': 'NA'},
      d['2000']['THA'][2] == {'ID': '31865', 'Name': 'Sujitra Ekmongkolpaisarn', 'Sex': 'F', 'Age': '23', 'Height': '172', 'Weight': '50', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Badminton', 'Event': "Badminton Women's Singles", 'Medal': 'NA'},
      d['2000']['THA'][3] == {'ID': '31865', 'Name': 'Sujitra Ekmongkolpaisarn', 'Sex': 'F', 'Age': '23', 'Height': '172', 'Weight': '50', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Badminton', 'Event': "Badminton Women's Doubles", 'Medal': 'NA'},
      d['2000']['THA'][4] == {'ID': '49680', 'Name': 'Arun Homraruen', 'Sex': 'M', 'Age': '30', 'Height': '174', 'Weight': '64', 'Team': 'Thailand', 'NOC': 'THA', 'Games': '2000 Summer', 'Year': '2000', 'Season': 'Summer', 'City': 'Sydney', 'Sport': 'Sailing', 'Event': "Sailing Men's Windsurfer", 'Medal': 'NA'},
      end = '\n\n'
  )
def test_get_medals_by_team():
  d = convert_to_dict(data)
  m = get_medals_by_team(d, '2000')
  print(len(m))
  print(m)
  print(
      '#2 ',
      len(m) == 200,
      m == {'FIN': (3, 1, 1), 'NOR': (20, 4, 19), 'NED': (27, 29, 23), 'EGY': (0, 0, 0), 'ARG': (0, 17, 3), 'CUB': (18, 35, 12), 'CMR': (18, 0, 0), 'MEX': (1, 2, 3), 'ITA': (22, 14, 29), 'PAK': (0, 0, 0), 'AZE': (2, 0, 1), 'CAN': (4, 4, 23), 'USA': (130, 61, 51), 'AUS': (60, 69, 54), 'KUW': (0, 0, 1), 'MAS': (0, 0, 0), 'BRU': (0, 0, 0), 'SUD': (0, 0, 0), 'BRN': (0, 0, 0), 'UZB': (1, 1, 2), 'JPN': (5, 31, 8), 'ESP': (3, 19, 20), 'ETH': (4, 1, 3), 'SRI': (0, 1, 0), 'SYR': (0, 0, 0), 'MAR': (0, 1, 4), 'SWE': (4, 20, 8), 'RUS': (66, 67, 54), 'JOR': (0, 0, 0), 'CHN': (39, 23, 17), 'GER': (31, 23, 64), 'GBR': (22, 20, 12), 'UGA': (0, 0, 0), 'SLO': (3, 0, 0), 'TUR': (3, 0, 2), 'RSA': (0, 2, 3), 'GHA': (0, 0, 0), 'ALG': (1, 1, 3), 'SUR': (0, 0, 0), 'SOM': (0, 0, 0), 'LBA': (0, 0, 0), 'FRA': (22, 30, 14), 'PLW': (0, 0, 0), 'LTU': (2, 0, 15), 'BRA': (0, 12, 36), 'UKR': (3, 20, 12), 'IRI': (3, 0, 1), 'NGR': (6, 2, 0), 'GRE': (4, 6, 8), 'CRO': (1, 0, 9), 'DMA': (0, 0, 0), 'DEN': (18, 3, 4), 'ANG': (0, 0, 0), 'IRQ': (0, 0, 0), 'MDV': (0, 0, 0), 'NZL': (1, 0, 3), 'PER': (0, 0, 0), 'SCG': (11, 1, 13), 'HUN': (25, 24, 4), 'CIV': (0, 0, 0), 'CYP': (0, 0, 0), 'KAZ': (3, 4, 0), 'KGZ': (0, 0, 1), 'BAN': (0, 0, 0), 'KSA': (0, 1, 1), 'QAT': (0, 0, 1), 'LIB': (0, 0, 0), 'OMA': (0, 0, 0), 'PLE': (0, 0, 0), 'YEM': (0, 0, 0), 'UAE': (0, 0, 0), 'ROU': (27, 6, 13), 'BLR': (3, 8, 11), 'TTO': (0, 1, 1), 'ISL': (0, 0, 1), 'NIG': (0, 0, 0), 'DJI': (0, 0, 0), 'SVK': (2, 3, 1), 'GUY': (0, 0, 0), 'JAM': (0, 20, 3), 'BAR': (0, 0, 1), 'VEN': (0, 0, 0), 'CHI': (0, 0, 17), 'IOA': (0, 0, 0), 'AUT': (3, 1, 0), 'INA': (2, 4, 2), 'BAH': (6, 0, 5), 'SMR': (0, 0, 0), 'MOZ': (1, 0, 0), 'POR': (0, 0, 2), 'CZE': (2, 3, 4), 'IND': (0, 0, 1), 'BUL': (5, 6, 2), 'SUI': (1, 11, 2), 'BEL': (0, 3, 4), 'MLT': (0, 0, 0), 'LUX': (0, 0, 0), 'GBS': (0, 0, 0), 'TUN': (0, 0, 0), 'GEO': (0, 0, 6), 'ERI': (0, 0, 0), 'TKM': (0, 0, 0), 'MAD': (0, 0, 0), 'MRI': (0, 0, 0), 'EST': (1, 0, 2), 'ISR': (0, 0, 1), 'ARM': (0, 0, 1), 'KEN': (2, 3, 2), 'MGL': (0, 0, 0), 'KOR': (12, 26, 35), 'GUI': (0, 0, 0), 'CGO': (0, 0, 0), 'POL': (7, 10, 7), 'VIN': (0, 0, 0), 'TOG': (0, 0, 0), 'ECU': (0, 0, 0), 'SEY': (0, 0, 0), 'URU': (0, 1, 0), 'GEQ': (0, 0, 0), 'ANT': (0, 0, 0), 'BOT': (0, 0, 0), 'SKN': (0, 0, 0), 'PAN': (0, 0, 0), 'COM': (0, 0, 0), 'TAN': (0, 0, 0), 'COL': (1, 0, 0), 'ISV': (0, 0, 0), 'SLE': (0, 0, 0), 'LAT': (1, 1, 1), 'AND': (0, 0, 0), 'MON': (0, 0, 0), 'SWZ': (0, 0, 0), 'ARU': (0, 0, 0), 'MDA': (0, 1, 1), 'ZIM': (0, 0, 0), 'CRC': (0, 0, 2), 'GUA': (0, 0, 0), 'NEP': (0, 0, 0), 'PNG': (0, 0, 0), 'MKD': (0, 0, 1), 'GAB': (0, 0, 0), 'SGP': (0, 0, 0), 'IRL': (0, 1, 0), 'PHI': (0, 0, 0), 'BER': (0, 0, 0), 'PUR': (0, 0, 0), 'ZAM': (0, 0, 0), 'DOM': (0, 0, 0), 'BOL': (0, 0, 0), 'MLI': (0, 0, 0), 'PAR': (0, 0, 0), 'HON': (0, 0, 0), 'PRK': (0, 1, 3), 'HKG': (0, 0, 0), 'TPE': (0, 1, 4), 'MYA': (0, 0, 0), 'MAW': (0, 0, 0), 'GUM': (0, 0, 0), 'BHU': (0, 0, 0), 'THA': (1, 0, 2), 'SEN': (0, 0, 0), 'HAI': (0, 0, 0), 'IVB': (0, 0, 0), 'CAF': (0, 0, 0), 'LBR': (0, 0, 0), 'NCA': (0, 0, 0), 'BEN': (0, 0, 0), 'AHO': (0, 0, 0), 'MTN': (0, 0, 0), 'ESA': (0, 0, 0), 'CPV': (0, 0, 0), 'TJK': (0, 0, 0), 'BIH': (0, 0, 0), 'GAM': (0, 0, 0), 'LIE': (0, 0, 0), 'NAM': (0, 0, 0), 'RWA': (0, 0, 0), 'STP': (0, 0, 0), 'BDI': (0, 0, 0), 'CAM': (0, 0, 0), 'LCA': (0, 0, 0), 'SOL': (0, 0, 0), 'GRN': (0, 0, 0), 'SAM': (0, 0, 0), 'BIZ': (0, 0, 0), 'COD': (0, 0, 0), 'VAN': (0, 0, 0), 'LES': (0, 0, 0), 'LAO': (0, 0, 0), 'TGA': (0, 0, 0), 'ALB': (0, 0, 0), 'VIE': (0, 1, 0), 'CAY': (0, 0, 0), 'FSM': (0, 0, 0), 'ASA': (0, 0, 0), 'CHA': (0, 0, 0), 'FIJ': (0, 0, 0), 'BUR': (0, 0, 0), 'NRU': (0, 0, 0), 'COK': (0, 0, 0)},
      end = '\n\n'
  )
def test_get_top_five():
  d = convert_to_dict(data)
  m = get_medals_by_team(d, '2000')
  print(get_top_five(m))
  d_mock = convert_to_dict(data_mock)
  m_mock = get_medals_by_team(d_mock, '2010')
  print(get_top_five(m_mock))
  print(
      '#3 ',
      get_top_five(m) == [('USA', 130, 61, 51), ('RUS', 66, 67, 54), ('AUS', 60, 69, 54), ('CHN', 39, 23, 17), ('GER', 31, 23, 64)],
      get_top_five(m_mock) == [('USA', 10, 0, 0), ('GER', 2, 0, 0), ('ESP', 0, 5, 0), ('FRA', 0, 5, 0), ('EGY', 0, 1, 2), ('ITA', 0, 1, 2), ('NCA', 0, 1, 2)],
      end = '\n\n'
  )
def test_get_medals_trend():
  d = convert_to_dict(data)
  print('USA')
  print(get_medals_trend(d, 'USA', 2001, 2015))
  print('THA')
  print(get_medals_trend(d, 'THA', 2000, 2016))
  print(
      '#4 ',
      get_medals_trend(d, 'USA', 2001, 2015) == [('2002', 11, 58, 15), ('2004', 117, 75, 71), ('2006', 9, 11, 32), ('2008', 127, 110, 80), ('2010', 12, 63, 22), ('2012', 145, 57, 46), ('2014', 10, 30, 24)],
      get_medals_trend(d, 'THA', 2000, 2016) == [('2000', 1, 0, 2), ('2002', 0, 0, 0), ('2004', 3, 1, 4), ('2006', 0, 0, 0), ('2008', 2, 2, 0), ('2012', 0, 2, 1), ('2014', 0, 0, 0), ('2016', 2, 2, 2)],
      end = '\n\n'
  )
def test_get_sports():
  d = convert_to_dict(data)
  print(get_sports(d, 'THA', '2000'))
  print(get_sports(d, 'THA', '2010'))
  print(get_sports(d, 'THA', '2020'))
  print(get_sports(d, 'SOM', '2000'))
  print(get_sports(d, 'THA', '2008'))
  print(get_sports(d, 'VIE', '2008'))
  print(get_sports(d, 'DEN', '2008'))
  print(get_sports(d, 'XXX', '2000'))
  print(
      '#5 ',
      get_sports(d, 'THA', '2000') == {'Weightlifting', 'Boxing'},
      get_sports(d, 'THA', '2010') == set(),
      get_sports(d, 'THA', '2020') == set(),
      get_sports(d, 'SOM', '2000') == set(),
      get_sports(d, 'THA', '2008') == {'Weightlifting', 'Boxing', 'Taekwondo'},
      get_sports(d, 'VIE', '2008') == {'Weightlifting'},
      get_sports(d, 'DEN', '2008') == {'Swimming', 'Equestrianism', 'Rowing', 'Sailing', 'Cycling', 'Canoeing'},
      get_sports(d, 'XXX', '2000') == set(),
      end = '\n\n'
  )
def test_get_common_sports():
  d = convert_to_dict(data)
  print(get_common_sports(d, {'THA','VIE'}, '2008'))
  print(get_common_sports(d, {'THA','VIE','DEN'}, '2008'))
  print(get_common_sports(d, {'THA','XXX'}, '2008'))
  print(
      '#6 ',
      get_common_sports(d, {'THA','VIE'}, '2008') == {'Weightlifting'},
      get_common_sports(d, {'THA','VIE','DEN'}, '2008') == set(),
      get_common_sports(d, {'THA','XXX'}, '2008') == set(),
      end = '\n\n'
  )
# test_convert_to_dict()
# test_get_medals_by_team()
# test_get_top_five()
# test_get_medals_trend()
# test_get_sports()
# test_get_common_sports()

6532013121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1002, 'const': 1581, 'code+const': 2583}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data[1:]:
        ID, Name, Sex, Age, Height, Weight, Team, NOC,             Games, Year, Season, City, Sport, Event, Medal = e
        if Year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[Year] = {}
        if NOC not in athletes_by_Year_NOC[Year]:
            athletes_by_Year_NOC[Year][NOC] = []
        abYN = {"ID": ID, "Name": Name, "Sex": Sex, "Age": Age,                   "Height": Height, "Weight": Weight, "Team": Team,                   "NOC": NOC, "Games": Games, "Year": Year, "Season": Season,                   "City": City, "Sport": Sport, "Event": Event, "Medal": Medal}
        athletes_by_Year_NOC[Year][NOC].append(abYN)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for NOC in athletes_by_Year_NOC[year]:
        if NOC not in medals:
            medals[NOC] = [0,0,0]
        for e in athletes_by_Year_NOC[year][NOC]:
            if e["Medal"] == "Gold":
                medals[NOC][0] += 1
            if e["Medal"] == "Silver":
                medals[NOC][1] += 1
            if e["Medal"] == "Bronze":
                medals[NOC][2] += 1
    for NOC in medals:
        medals[NOC] = tuple(medals[NOC])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    ans = []
    for NOC, medal_count in medals.items():
        ans.append([medal_count[0], medal_count[1], medal_count[2], NOC])
    ans.sort(reverse=True)
    i = 0
    while i < len(ans) and (i < 5 or ans[i][:3] == ans[4][:3]):
        topfive.append((ans[i][3], ans[i][0], ans[i][1], ans[i][2]))
        i += 1
    topfive.sort(key=lambda x: (-x[1], -x[2], -x[3], x[0]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start, end+1):
        if i%2 == 0:
            if str(i) in athletes_by_Year_NOC and                 NOC in athletes_by_Year_NOC[str(i)]:
                Gold = 0
                Silver = 0
                Bronze = 0
                for e in athletes_by_Year_NOC[str(i)][NOC]:
                    if e["Medal"] == "Gold":
                        Gold += 1
                    elif e["Medal"] == "Silver":
                        Silver += 1
                    elif e["Medal"] == "Bronze":
                        Bronze += 1
                trend.append((str(i), Gold, Silver, Bronze))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        for e in athletes_by_Year_NOC[year][NOC]:
            if e["Medal"] != "NA":
                sports.add(e["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    check = False
    for NOC in NOCs:
        a = get_sports(athletes_by_Year_NOC, NOC, year)
        if not check:
           sports = a
           check = True
        else :
           sports = sports.intersection(a)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532014821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1684, 'const': 2183, 'code+const': 3867}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  data1=data[1:len(data)]
  for people in data1:
    if people[9] in athletes_by_Year_NOC:
      if people[7] in athletes_by_Year_NOC[people[9]]:
        dic={}
        dic["ID"]=people[0]
        dic["Name"]=people[1]
        dic["Sex"]=people[2]
        dic["Age"]=people[3]
        dic["Height"]=people[4]
        dic["Weight"]=people[5]
        dic["Team"]=people[6]
        dic["NOC"]=people[7]
        dic["Games"]=people[8]
        dic["Year"]=people[9]
        dic["Season"]=people[10]
        dic["City"]=people[11]
        dic["Sport"]=people[12]
        dic["Event"]=people[13]
        dic["Medal"]=people[14]
        athletes_by_Year_NOC[people[9]][people[7]].append(dic)
      else:
        dic={}
        dic["ID"]=people[0]
        dic["Name"]=people[1]
        dic["Sex"]=people[2]
        dic["Age"]=people[3]
        dic["Height"]=people[4]
        dic["Weight"]=people[5]
        dic["Team"]=people[6]
        dic["NOC"]=people[7]
        dic["Games"]=people[8]
        dic["Year"]=people[9]
        dic["Season"]=people[10]
        dic["City"]=people[11]
        dic["Sport"]=people[12]
        dic["Event"]=people[13]
        dic["Medal"]=people[14]
        athletes_by_Year_NOC[people[9]][people[7]]=[]
        athletes_by_Year_NOC[people[9]][people[7]].append(dic)
    else:
      Mak=[]
      dic={}
      dic["ID"]=people[0]
      dic["Name"]=people[1]
      dic["Sex"]=people[2]
      dic["Age"]=people[3]
      dic["Height"]=people[4]
      dic["Weight"]=people[5]
      dic["Team"]=people[6]
      dic["NOC"]=people[7]
      dic["Games"]=people[8]
      dic["Year"]=people[9]
      dic["Season"]=people[10]
      dic["City"]=people[11]
      dic["Sport"]=people[12]
      dic["Event"]=people[13]
      dic["Medal"]=people[14]
      athletes_by_Year_NOC[people[9]]={}
      athletes_by_Year_NOC[people[9]][people[7]]=[]
      athletes_by_Year_NOC[people[9]][people[7]].append(dic)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return medals
  for l in athletes_by_Year_NOC[year]:
    gold=0
    silver=0
    bronze=0
    for dig in athletes_by_Year_NOC[year][l]:
      if dig["Medal"]=="Bronze":
        bronze+=1
      else: 
        if dig["Medal"]=="Silver":
          silver+=1
        else:
          if dig["Medal"]=="Gold":
            gold+=1
    medals[l]=(gold,silver,bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a=[]
  for l in medals:
    a.append([-int(medals[l][0]),-int(medals[l][1]),-int(medals[l][2]),l])
  a.sort()
  for i in range(len(a)):
    if len(topfive)<5:
      topfive.append((a[i][3],abs(a[i][0]),abs(a[i][1]),abs(a[i][2])))
    else:
      if a[i][0]==a[i-1][0] and a[i][1]==a[i-1][1] and a[i][2]==a[i-1][2]:
        topfive.append((a[i][3],abs(a[i][0]),abs(a[i][1]),abs(a[i][2])))
      else:
        break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  Start=0
  End=0
  if start%2==1:
    Start=int(start+1)
  else:
    Start=int(start)
  if end%2==1:
    End=end-1
  else:
    End=end
  for i in range(Start,End+1):
    if str(i) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)]:
      Leon = get_medals_by_team(athletes_by_Year_NOC, str(i))
      Leon =  Leon[NOC]
      trend.append((str(i), Leon[0], Leon[1], Leon[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i["Medal"] != "NA":
        sports.add(i["Sport"])
  else:
    return set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports_intersection = set()
  intersect = False
  for NOC in NOCs:
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]: athletes = athletes_by_Year_NOC[year][NOC]
    else: return sports
    for athlete in athletes:
      if athlete['Medal']!='NA': sports.add(athlete['Sport'])
    if not intersect:
      sports_intersection = sports
      intersect = True
    else: sports_intersection = sports.intersection(sports_intersection)
  return sports_intersection
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532017721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1092, 'const': 1230, 'code+const': 2322}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  list_dict_data = []
  for i in range(1,len(data)):
    dict_data = dict(zip(data[0],data[i]))
    year = dict_data['Year']
    noc = dict_data['NOC']
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year]={}
    if noc not in  athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc]=[]
    athletes_by_Year_NOC[year][noc].append(dict_data)
  return athletes_by_Year_NOC  
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC.keys():
    return medals
  G=S=B=0
  athletes_NOC = athletes_by_Year_NOC[year]
  for i in athletes_NOC.keys():
   for j in athletes_NOC[i]:
     if j['Medal'] == 'Gold':G+=1
     elif  j['Medal'] == 'Silver':S+=1
     elif  j['Medal'] == 'Bronze':B+=1
   medals[i]=(G,S,B)
   G=S=B=0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  medals_list = []
  if medals == {}:
    return []
  for i in medals:
    change = [-1*j for j in list(medals[i])]
    medals_list.append([change,i])
  medals_list.sort()
  change2 = [[[-1*j for j in i[0]] ,i[1]] for i in medals_list]
  medals_list_tuple = [[tuple(i[0]),i[1]] for i in change2]
  if len(medals_list_tuple)>=5:
    for i in range(5):
      topfive.append((medals_list_tuple[i][1],)+medals_list_tuple[i][0])
    for i in range(5,len(medals_list_tuple)):
      if medals_list_tuple[i][0]==medals_list_tuple[i-1][0]:
        topfive.append((medals_list_tuple[i][1],)+medals_list_tuple[i][0])
      else:
        break
  else:
    for i in range(len(medals_list_tuple)):
      topfive.append((medals_list_tuple[i][1],)+medals_list_tuple[i][0])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):  
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[str(i)]:
        athletes = athletes_by_Year_NOC[str(i)][NOC]
        G=S=B=0
        for j in athletes:
          if j['Medal'] == 'Gold':G+=1
          elif  j['Medal'] == 'Silver':S+=1
          elif  j['Medal'] == 'Bronze':B+=1
        trend.append((str(i),G,S,B))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      athletes = athletes_by_Year_NOC[year][NOC]
      for i in athletes:
        if  i['Medal']!='NA':
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sport_NOC =[]
  for i in NOCs:
    sport_NOC.append(get_sports(athletes_by_Year_NOC, i, year))
  sports = sport_NOC[0]
  for i in sport_NOC:
    sports = sports.intersection(i) 
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532019021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 730, 'const': 1069, 'code+const': 1799}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  header = data[0]
  for i in data[1:]:
    if i[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[i[9]] = {}
    if i[7] not in athletes_by_Year_NOC[i[9]]:
      athletes_by_Year_NOC[i[9]][i[7]] = []
    athletes_by_Year_NOC[i[9]][i[7]].append(dict(zip(header, i)))
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i, v in athletes_by_Year_NOC[year].items():
    am = [j['Medal'] for j in v]
    medals[i] = (am.count('Gold'), am.count('Silver'), am.count('Bronze'))
  return medals
#======================================
def get_top_five(medals):
  sorted_medals = sorted(medals.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))
  pre_topfive = sorted_medals[:5]
  for i, v in sorted_medals[5:]:
    if v != pre_topfive[-1][1]:
      break
    pre_topfive.append((i, v))
  topfive = [(i, *v) for i, v in pre_topfive]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start, end + 1):
    try: 
      medals = [j['Medal'] for j in athletes_by_Year_NOC[str(i)][NOC]]
    except:
      continue
    trend.append((str(i), medals.count('Gold'), medals.count('Silver'), medals.count('Bronze')))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  try:
    return set([i['Sport'] for i in athletes_by_Year_NOC[year][NOC] if i['Medal'] != 'NA'])
  except:
    return set()
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set.intersection(*[get_sports(athletes_by_Year_NOC, i, year) for i in NOCs])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532033721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 762, 'const': 844, 'code+const': 1606}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for a in data[1:] :
    y,noc = a[9],a[7] 
    if y not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[y] = {}
    if noc not in athletes_by_Year_NOC[y] :
      athletes_by_Year_NOC[y][noc] = []
    data_noc = {}
    for i in range(len(a)) :
        data_noc[data[0][i]] = a[i]
    athletes_by_Year_NOC[y][noc].append(data_noc)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC: return medals
  city = athletes_by_Year_NOC[year] 
  for a in city :
    g,s,b = 0,0,0
    for i in city[a] :
      if i['Medal'] == 'Gold' :
        g += 1
      elif i['Medal'] == 'Silver' :
        s += 1
      elif i['Medal'] == 'Bronze' :
        b += 1
    medals[a] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  reverse_dict = {}
  for k,v in medals.items():
    if v not in reverse_dict :
      reverse_dict[v] = [k]
    else :
      reverse_dict[v].append(k)
  d = sorted(reverse_dict,reverse=True)
  for a in d :
    if len(topfive) < 5 :
      for t in sorted(reverse_dict[a]) :
        g,s,b = a
        topfive.append((t,g,s,b))
    elif len(topfive) >= 5 : break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1) :
    if str(i) in athletes_by_Year_NOC :
      if NOC in athletes_by_Year_NOC[str(i)] :
        g,s,b = get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC]
        trend.append((str(i),g,s,b))
    else : pass
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC  : return set()
  if NOC not in athletes_by_Year_NOC[year] : return set()
  for a in athletes_by_Year_NOC[year][NOC] :
    if a['Medal'] != 'NA' :
      sports.add(a['Sport'])
    else : pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
  for a in NOCs :
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, a, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532034321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1160, 'const': 1056, 'code+const': 2216}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  y=[]
  for i in range(1,len(data)):
    if data[i][9] not in y:
      y.append(data[i][9])
  for i in (sorted(y)):
    athletes_by_Year_NOC[str(i)]={}
  for i in (sorted(y)):
    for j in range(1,len(data)):
      a={}
      if data[j][9]==str(i):
        for k in range(len(data[0])):
          a[data[0][k]]=data[j][k]
        if data[j][7] in athletes_by_Year_NOC[data[j][9]]:
          athletes_by_Year_NOC[str(i)][data[j][7]] += [a]
        else:
          athletes_by_Year_NOC[str(i)][data[j][7]]=[]
          athletes_by_Year_NOC[str(i)][data[j][7]] += [a]
  #print(y)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year]:
    g=0
    s=0
    b=0
    for j in range(len(athletes_by_Year_NOC[year][i])):
      if athletes_by_Year_NOC[year][i][j]['Medal']=='Gold':
        g+=1
      if athletes_by_Year_NOC[year][i][j]['Medal']=='Silver':
        s+=1
      if athletes_by_Year_NOC[year][i][j]['Medal']=='Bronze':
        b+=1
    medals[i]=(g,s,b)
  return medals
#======================================
def get_top_five(medals):
  x=0
  data = [[medals[i], i] for i in medals]
  data.sort(key=lambda x: (-x[0][0], -x[0][1], -x[0][2], x[1]))
  for i in range(5, len(data)):
      if data[i][0] == data[i-1][0]:
        x += 1
      else:
        break
  topfive = []
  for i in range(5 + x):
      tr = data[i][0]
      topfive.append((data[i][1], tr[0], tr[1], tr[2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    if str(i) in athletes_by_Year_NOC.keys():
      m=get_medals_by_team(athletes_by_Year_NOC, str(i))
      if NOC in athletes_by_Year_NOC[str(i)]:
        #for j in range(len(athletes_by_Year_NOC[str(i)][NOC])):
        tr=m[NOC]
        trend.append((str(i), tr[0], tr[1], tr[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  sp=[]
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      a=0
      for i in range(len(athletes_by_Year_NOC[year][NOC])):
        if athletes_by_Year_NOC[year][NOC][i]['Medal'] != 'NA':
          sp.append(athletes_by_Year_NOC[year][NOC][i]['Sport'])
  sports=set(sp)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sp=[]
  data=[]
  for i in  NOCs:
    data.append(get_sports(athletes_by_Year_NOC,i, year))
  #print(data)
  for i in data[0]:
    a=0
    for j in range(len(data)):
      if i in data[j]:
        a+=1
    if a== len(data):
      sp.append(i)
  sports=set(sp)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532036621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 924, 'const': 1256, 'code+const': 2180}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)) :
      year,NOC = data[i][9],data[i][7]
      if year not in athletes_by_Year_NOC :
          athletes_by_Year_NOC[year] = {NOC:[getDataDict(data[i])]}
      else :
          if NOC not in athletes_by_Year_NOC[year].keys() :
              athletes_by_Year_NOC[year][NOC] = [getDataDict(data[i])]
          else :
              athletes_by_Year_NOC[year][NOC].append(getDataDict(data[i]))
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for country in athletes_by_Year_NOC[year] :
      medal = [0,0,0]
      for playerData in athletes_by_Year_NOC[year][country] :
          if playerData["Medal"] == "Gold" :
              medal[0] += 1
          elif playerData["Medal"] == "Silver" :
              medal[1] += 1
          elif playerData["Medal"] == "Bronze" :
              medal[2] += 1
      medals[country] = tuple(medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  reversedMedals = getReversedDict(medals)
  for medal in sorted(reversedMedals,reverse=True) :
      tmp = []
      for NOC in reversedMedals[medal] :
          tmp.append(tuple([NOC]) + medal)
      for t in sorted(sorted(tmp)) :
          topfive.append(t)
      if len(topfive) >= 5 :
            return topfive
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  if start % 2 != 0 :
      start += 1 
  if end % 2 != 0 :
      end -= 1
  years = ["2000","2002","2004","2006","2008","2010","2012","2014","2016"]
  period = years[years.index(str(start)):years.index(str(end))+1]
  for year in period : 
    if NOC in get_medals_by_team(athletes_by_Year_NOC, year) :
        trend.append(tuple([year])+get_medals_by_team(athletes_by_Year_NOC, year)[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for data in athletes_by_Year_NOC[year][NOC] :
        if data["Medal"] != "NA" :
          sports.add(data["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  if len(NOCs) != 0 :
    NOCs  = list(NOCs)
    sports = get_sports(athletes_by_Year_NOC,NOCs[0],year)
    for NOC in NOCs[1:] :
      sports = sports.intersection(get_sports(athletes_by_Year_NOC,NOC,year))
    return sports
  else :
    return set() 
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def getDataDict(data) :
  baseData = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
  dataDict = {}
  for i in range(len(data)) :
      dataDict[baseData[i]] = data[i]
  return dataDict
def getReversedDict(dict) :
  newDict = {}
  for key,value in dict.items() :
    if value not in newDict :
        newDict[value] = [key]
    else :
        newDict[value].append(key)
  return newDict

6532038921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 892, 'const': 1224, 'code+const': 2116}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for athlete in data[1:]:
    if not athlete[9] in athletes_by_Year_NOC:
      athletes_by_Year_NOC[athlete[9]] = {}
    if not athlete[7] in athletes_by_Year_NOC[athlete[9]]:
      athletes_by_Year_NOC[athlete[9]][athlete[7]] = []
    cache = {}
    for i in range(len(athlete)):
      cache[data[0][i]] = athlete[i]
    athletes_by_Year_NOC[athlete[9]][athlete[7]].append(cache)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i in athletes_by_Year_NOC[year].items():
    cache = [0,0,0] # Gold, Silver, Bronze 
    for j in i[1]:
      if j["Medal"] == "Gold":
        cache[0] += 1
      if j["Medal"] == "Silver":
        cache[1] += 1
      if j["Medal"] == "Bronze":
        cache[2] += 1
    medals[i[0]] = tuple(cache)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  item = 5
  for data in medals.items():
    topfive.append(tuple([data[0], data[1][0], data[1][1], data[1][2]]))
  topfive.sort()
  topfive.sort(reverse=True, key=lambda x: x[3])
  topfive.sort(reverse=True, key=lambda x: x[2])
  topfive.sort(reverse=True, key=lambda x: x[1])
  for data in topfive[5:]:
    if data[1] == topfive[4][1] and data[2] == topfive[4][2] and data[3] == topfive[4][3]:
      item += 1
  return topfive[:item]
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end +1):
    if str(year) in athletes_by_Year_NOC:
      if NOC in get_medals_by_team(athletes_by_Year_NOC, str(year)):
        medals = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
        trend.append(tuple([str(year), medals[0], medals[1], medals[2]]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for comp in athletes_by_Year_NOC[year][NOC]:
      if comp['Medal'] != "NA":
        sports.add(comp["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  list_of_sport = []
  for i in range(len(NOCs)):
    NOC = list(NOCs)[i]
    data = get_sports(athletes_by_Year_NOC, NOC, year)
    if i == 0:
      sports = data
    else:
      sports = set.intersection(sports, data)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532046921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 954, 'const': 934, 'code+const': 1888}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    e = data[i]
    dic_data = {}
    for j in range(15):                                 #ทำให้ลิสข้อมูล เป็น dic
      dic_data[data[0][j]] = e[j]
    if e[9] not in athletes_by_Year_NOC:      #เช็คว่าใน set มีปีนั้นรึยัง
      athletes_by_Year_NOC[e[9]] = {e[7]:[dic_data]}
    else:
      if e[7] in athletes_by_Year_NOC[e[9]]:  #เช็คว่าใน set มี noc นั้นรึยัง
        athletes_by_Year_NOC[e[9]][e[7]] = athletes_by_Year_NOC[e[9]][e[7]]+[dic_data]
      else:
        athletes_by_Year_NOC[e[9]].update({e[7]:[dic_data]})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC: return medals
  for noc in athletes_by_Year_NOC[year]:
    g=0;s=0;b=0
    for i in range(len(athletes_by_Year_NOC[year][noc])):
      if athletes_by_Year_NOC[year][noc][i]['Medal'] == 'Gold':   
        g+=1
      elif athletes_by_Year_NOC[year][noc][i]['Medal'] == 'Silver':
        s+=1
      elif athletes_by_Year_NOC[year][noc][i]['Medal'] == 'Bronze':
        b+=1
    medals[noc] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  reverse = {}
  for e in medals:
    if medals[e] in reverse:
      reverse[medals[e]] += ','+e
    else:
      reverse[medals[e]] = e
  lis_tup = sorted(reverse.keys(), reverse=True)
  i=0
  while len(topfive)<5 and i<len(medals):
    lis_noc=sorted(reverse[lis_tup[i]].split(','))
    for noc in lis_noc:
      topfive.append(tuple([noc]+list(lis_tup[i])))
    i+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  lis=athletes_by_Year_NOC #แทนเพื่อให้เขียนตัวแปรสั้น+กันแก้ไขinput
  set_year=set()
  for e in lis:                       #เช็คว่าปีไหนบ้างที่ noc ร่วม
    if NOC in lis[e]:
      set_year.add(e)
  set_year = sorted(list(set_year))
  for i in range(start,end+1):
    if str(i) in set_year:
      medal = get_medals_by_team(lis,str(i))
      trend.append(tuple([str(i)])+medal[NOC])
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  d=athletes_by_Year_NOC        #แทนเพื่อให้เขียนตัวแปรสั้น+กันแก้ไขinput
  if year not in d.keys(): pass
  elif NOC not in d[year].keys(): pass
  else:
    for e in d[year][NOC]:
      if e['Medal'] != 'NA':
        sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sports.update(get_sports(athletes_by_Year_NOC,list(NOCs)[0],year))
  for e in NOCs:
    x=get_sports(athletes_by_Year_NOC,e,year)
    sports.intersection_update(x)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532048121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1098, 'const': 1261, 'code+const': 2359}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    NOC = data[i][7]
    Y = data[i][9]
    Z = dict(zip(data[0],data[i]))
    if Y not in athletes_by_Year_NOC.keys():
       athletes_by_Year_NOC[Y] = {}
    if NOC not in athletes_by_Year_NOC[Y].keys():
      athletes_by_Year_NOC[Y][NOC] = []
    athletes_by_Year_NOC[Y][NOC].append(Z)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  G = 0
  S = 0
  B = 0
  for i in athletes_by_Year_NOC[year].keys():
    value = athletes_by_Year_NOC[year][i]
    for j in value:
      if j['Medal'] == 'Gold':
        G +=1
      if j['Medal'] == 'Silver':
        S +=1
      if j['Medal'] == 'Bronze':
        B +=1
    medals[i] = (G,S,B)
    G = S = B = 0
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  y = sorted(medals.items(), key=lambda item: item[1],reverse=True )
  all = []
  for i in range(len(y)):
    all.append([y[i][1][0]*-1,y[i][1][1]*-1,y[i][1][2]*-1,y[i][0]])
  all = sorted(all)
  for i in range(len(all)):
    all[i][0], all[i][1], all[i][2], all[i][3] = all[i][3], all[i][0] *-1, all[i][1]*-1, all[i][2]*-1
  if len(all)<5:
    for i in range(len(all)):
      topfive.append(all[i])
  else:
    topfive += all[:5]
    for i in range(4,len(all)-1):
      if all[i][1:4]==all[i+1][1:4] :
        topfive.append(all[i+1])
      else:
          break
    for i in range(len(topfive)):
      topfive[i] = tuple(topfive[i])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    I = str(i)
    if I in athletes_by_Year_NOC.keys():
      if NOC in athletes_by_Year_NOC[I]:
        s = athletes_by_Year_NOC[I][NOC]
        G = 0
        S = 0
        B = 0
        for j in s:
          if j['Medal'] == 'Gold':
            G +=1
          if j['Medal'] == 'Silver':
            S +=1
          if j['Medal'] == 'Bronze':
            B +=1
        trend.append((I,G,S,B))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      s = athletes_by_Year_NOC[year][NOC]
      for i in s:
        if i['Medal'] =='NA':
          pass
        else:
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  s = []
  for i in NOCs:
    s.append(get_sports(athletes_by_Year_NOC,i,year))
  sports = s[0]
  for i in s:
    sports = sports.intersection(i)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532052621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1134, 'const': 836, 'code+const': 1970}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in data[1:]:
    athletes_by_Year_NOC[i[9]]={}
  for i in data[1:]:
    if i[7] in  athletes_by_Year_NOC[i[9]] :
        ds={}
        for e in range(len(data[0])):
         ds[data[0][e]]=i[e]
        athletes_by_Year_NOC[i[9]][i[7]].append(ds)
    else: 
        athletes_by_Year_NOC[i[9]][i[7]]=[]
        ds={}
        for e in range(len(data[0])):
         ds[data[0][e]]=i[e]
        athletes_by_Year_NOC[i[9]][i[7]].append(ds)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    if year not in athletes_by_Year_NOC:
        return {}
    ano=athletes_by_Year_NOC[year]
    medals = {}
    for i in ano:
        g=0
        s=0
        br=0
        for e in ano[i]:
            if e['Medal']=="Gold":
                g+=1
            elif e['Medal']=="Silver":
                s+=1
            elif e['Medal']=="Bronze":
                br+=1
        medals[i]=(g,s,br)
    return medals
#======================================
def get_top_five(medals):
  topfive = []
  mm=[]
  for i, j in medals.items():
      ds=[]
      for e in j:
          ds.append(e*-1)
      mm.append([ds,i])
  mm.sort()
  ms=[]
  for i,j in mm:
      dds=[]
      for e in i:
          dds.append(e*-1)
      ms.append([j,dds])
  mb=[] 
  for i,k in ms[:5]:
      mds=[]   
      mds.append(i)
      for e in k:
          mds.append(e)
      mb.append(mds)
  for i in range(5,len(ms)):
      if ms[i][1]==ms[i-1][1]:
          lo=[]
          lo.append(ms[i][0])
          for e in ms[i][1]:
              lo.append(e)
          mb.append(lo)
      else:
          break
  topfive=[tuple(e) for e in mb]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  bf=[]
  for i in range(start,end+1):
     if  not (str(i)  in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(i)])  :
         pass
     else:
        ys=[]
        y=get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]
        ys.append(str(i))
        for e in y:
            ys.append(e)
        bf.append(ys)
  trend=[tuple(e) for e in bf]
  return(trend)
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if not (year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]):
      return set()
  else:
      all_id= athletes_by_Year_NOC[year][NOC]
      for e in all_id:
          if "Sport" in e and e['Medal']!="NA":
              sports.add(e["Sport"])
  return(sports)
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sol=[]
  for i in NOCs:
      sol.append(get_sports(athletes_by_Year_NOC, i, year))
  sports = set(sol[0])  
  for i in range(1, len(sol)):
    sports = sports.intersection(sol[i])
  return(sports)
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532058421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1010, 'const': 1033, 'code+const': 2043}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data) :
    s=dict()
    for a in data[1:] :
        year=a[9] ; country=a[7]
        if year not in s:
            s[year]=dict()       
        if country  not in s[year] :
            s[year][country]=list()
        inn=dict() 
        for i in range(len(data[0])) :
            inn[data[0][i]]=a[i]
        s[year][country].append(inn)
    return   s
def get_medals_by_team(d, year) :
    if year not in d :
        summary=dict()
    else :
        summary=dict()
        country=d[year]
        for e in country:
            if e not in summary :
                summary[e]=()
            v=country[e]
            count=[0,0,0]
            for t in v :
                if t['Medal'] == 'Gold' :
                    count[0]+=1
                if t['Medal'] == 'Silver':
                    count[1]+=1
                if t['Medal'] == 'Bronze':
                    count[2]+=1
            count=tuple(count)
            summary[e]=count
    return summary
def get_top_five(medals):
    total=[]
    for e in medals:
        total.append((medals[e],e))
    total.sort()
    total=total[::-1]
    for i in range(len(total)):
        for j in range(i,len(total)) :
            if total[i][0]==total[j][0] :
                if total[i][1]>total[j][1] :
                    total[i],total[j]=total[j],total[i]
    result=total[:5]
    if len(total) > 4 :
        for i in range(4,len(total)-1) :
            if total[i][0]==total[i+1][0] :
                result.append(total[i+1])
            else :
                break
    final=list()
    for a,b in result:
        a=list(a) 
        a.insert(0,b) ; a=tuple(a)
        final.append(a) 
    return  final
def get_medals_trend(data,noc, start, end) :
    collect=list()
    for  y in range(int(start),int(end)+1):
        y=str(y) ; a=[]
        if y in data :
            a.append(y)
            total=get_medals_by_team(data,y)
            if noc in total :
                b=list(total[noc])
                b.insert(0,y)
                b=tuple(b)
                collect.append(b)
    return collect
def get_sports(data,noc, year) :
    sports=set()
    if year in data  and noc in data[year]  :
        for e in data[year][noc]:
            if e['Medal'] in['Gold','Bronze','Silver'] :
                sports.add(e['Sport'])
    return sports
def get_common_sports(data,country, year) :
    result=[]
    for e in country :
        a=get_sports(data,e,year) ;result.append(a)
    re=result[0]
    for i in range(1,len(result)) :
        re=re.intersection(result[i])
    return re
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532065821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1148, 'const': 888, 'code+const': 2036}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        if data[i][9] in athletes_by_Year_NOC:
            if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
                pass
            else:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
        else:
            athletes_by_Year_NOC[data[i][9]] = {}
            if data[i][7] in athletes_by_Year_NOC[data[i][9]]:
                pass
            else:
                athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
        dict_data = {}
        for j in range(len(data[0])):
            dict_data[data[0][j]] = data[i][j]
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(dict_data)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC: return medals
    for e in athletes_by_Year_NOC[year]:
        gold = 0 ; silver = 0 ; bronze = 0
        for i in range(len(athletes_by_Year_NOC[year][e])):
            if athletes_by_Year_NOC[year][e][i]['Medal'] == 'Gold': gold += 1
            elif athletes_by_Year_NOC[year][e][i]['Medal'] == 'Silver': silver += 1
            elif athletes_by_Year_NOC[year][e][i]['Medal'] == 'Bronze': bronze += 1
        medals[e] = (gold, silver, bronze)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medals_in_list = [(medals[e][0:3],e) for e in medals]
    medals_in_list.sort()
    n = len(medals_in_list)
    if n == 0 : return topfive
    i = 1
    while i <= 5:
        if i > len(medals_in_list): break
        yeum = []
        while medals_in_list[(-i)%n][0] == medals_in_list[(-i-1)%n][0]:
            yeum.insert(0,(medals_in_list[-i][1],)+medals_in_list[-i][0])
            i += 1
        yeum.insert(0,(medals_in_list[-i][1],)+medals_in_list[-i][0])
        topfive += yeum
        i += 1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    year = start
    while start <= year <= end:
        if str(year) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(year)]:
                trend.append((str(year),) + get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC])
        year += 1
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]: # e is dict
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if NOCs == {}: return sports
    x = [get_sports(athletes_by_Year_NOC, e, year) for e in NOCs]
    comp = x[0] & x[1%len(x)]
    for i in range(2,len(x)):
        comp = comp & x[i]
    sports = comp
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532070921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1284, 'const': 1536, 'code+const': 2820}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {} 
  for i in range(1,len(data)) :
    if not data[i][9] in athletes_by_Year_NOC:
      athletes_by_Year_NOC[data[i][9]] = {}
    if not data[i][7] in athletes_by_Year_NOC[data[i][9]]:
      athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    row = {}
    for j in range(len(data[0])):
      row[data[0][j]] = data[i][j]
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(row)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for name, NOC in athletes_by_Year_NOC[year].items():
      gold = 0
      silver = 0
      bronze = 0
      for l in NOC:  
        if l["Medal"] == "Gold":
          gold += 1
        elif l["Medal"] == "Silver":
          silver += 1
        elif l["Medal"] == "Bronze":
          bronze += 1
      medals[name] = (gold, silver ,bronze) 
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  order_medal = []
  for key in medals:
    order_medal.append((medals[key][0],medals[key][1],medals[key][2],key))
  # print(order_medal)
  order_medal = sorted(order_medal, key=lambda x: (-x[0], -x[1], -x[2], x[3]), reverse=False)
  count = 0
  for i in range(len(order_medal)):
    if i < 5:
      # if ((order_medal[i][0],order_medal[i][1],order_medal[i][2]) !=  (topfive[-1][1],topfive[-1][2],topfive[-1][3])):
      count+=1
      topfive.append((order_medal[i][3],order_medal[i][0],order_medal[i][1],order_medal[i][2]))
    else:
      break
  if(len(order_medal) <= 5):
    return topfive
  while((order_medal[count][0],order_medal[count][1],order_medal[count][2]) ==  (topfive[-1][1],topfive[-1][2],topfive[-1][3])):
    topfive.append((order_medal[count][3],order_medal[count][0],order_medal[count][1],order_medal[i][2]))
    count+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend=[]
  ans={}
  for i in athletes_by_Year_NOC:
    # print(i)
    if int(i) >= start and int(i) <= end:
      # print(i)
      # print(athletes_by_Year_NOC[i][NOC])
      if NOC in athletes_by_Year_NOC[i]:
        ans[i]=[0,0,0]
        for e in athletes_by_Year_NOC[i][NOC]:
          # print(e["Medal"])
          if e["Medal"] == "Gold":
            ans[i][0]+=1
          elif e["Medal"] == "Silver":
            ans[i][1]+=1
          elif e["Medal"] == "Bronze":
            ans[i][2]+=1
  for key in ans:
    trend.append((key,ans[key][0],ans[key][1],ans[key][2]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for e in athletes_by_Year_NOC[year][NOC]:
        if e["Medal"] != 'NA':
          sports.add(e["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  r={}
  if year in athletes_by_Year_NOC:
    for NOC in NOCs:
      if NOC in athletes_by_Year_NOC[year]:
        for e in athletes_by_Year_NOC[year][NOC]:
              if e["Medal"] != 'NA':
                # sports.add(e["Sport"])
                if e["Sport"] in r:
                  r[e["Sport"]].add(NOC)
                else:
                  r[e["Sport"]]={NOC}
  for key in r:
    if r[key] == set(NOCs):
      sports.add(key)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532071521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 926, 'const': 941, 'code+const': 1867}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data) :
  athletes_by_Year_NOC = {}
  for i in range(1 , len(data)) :
    a = {}
    for j in range(len(data[0])) :
      a[data[0][j]] = data[i][j]
    if a['Year'] in athletes_by_Year_NOC and a['NOC'] in athletes_by_Year_NOC[a['Year']]:
      athletes_by_Year_NOC[a['Year']][a['NOC']].append(a)
    elif a['Year'] in athletes_by_Year_NOC and a['NOC'] not in athletes_by_Year_NOC[a['Year']] :
      athletes_by_Year_NOC[a['Year']][a['NOC']] = []
      athletes_by_Year_NOC[a['Year']][a['NOC']].append(a)
    elif a['Year'] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[a['Year']] = {}
      athletes_by_Year_NOC[a['Year']][a['NOC']] = []
      athletes_by_Year_NOC[a['Year']][a['NOC']].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year) :
  medals = {}
  if year in athletes_by_Year_NOC :
    for i in athletes_by_Year_NOC[year] :
      g = 0
      s = 0
      b = 0
      for j in athletes_by_Year_NOC[year][i] :
        if j['Medal'] == 'Gold' :
          g += 1
        elif j['Medal'] == 'Silver' :
          s += 1
        elif j['Medal'] == 'Bronze' :
          b += 1
      medals[i] = (g , s , b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  x = []
  for i in medals :
    x.append([- medals[i][0] , - medals[i][1] , - medals[i][2] , i])
  x.sort()
  for i in x :
    a=(i[3] , - i[0] , - i[1] , - i[2])
    if len(topfive) >= 5 and topfive[-1][1:] != a[1:] :
      break
    topfive.append(a)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end) :
  trend = []
  for i in range(start , end + 1) :
    if NOC in get_medals_by_team(athletes_by_Year_NOC, str(i)) :
      trend.append((str(i),) + get_medals_by_team(athletes_by_Year_NOC, str(i))[NOC]) 
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year) :
  sports = set()
  if year in athletes_by_Year_NOC :
    if NOC in athletes_by_Year_NOC[year] :
      for i in athletes_by_Year_NOC[year][NOC] :
        if i['Medal'] != 'NA' :
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year) :
  sports = set()
  a = []
  x = set()
  for i in NOCs :
    a.append(get_sports(athletes_by_Year_NOC , i , year))
  x = a[0] & a[1]
  for j in range(1, len(NOCs)-1) :
    x = x & a[j+1]
  sports = x
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532076721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 830, 'const': 1245, 'code+const': 2075}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i, j in enumerate(data):
    if i == 0: continue
    if j[9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[j[9]] = {}
    if j[7] not in athletes_by_Year_NOC[j[9]]:
      athletes_by_Year_NOC[j[9]][j[7]] = []
    athletes_by_Year_NOC[j[9]][j[7]].append(dict(zip(data[0], j)))
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for i, (j, k) in enumerate(athletes_by_Year_NOC[year].items()):
    Gold, Silver, Bronze = 0, 0, 0
    for l in k:
      if l['Medal'] == 'Gold':
        Gold += 1
      elif l['Medal'] == 'Silver':
        Silver += 1
      elif l['Medal'] == 'Bronze':
        Bronze += 1
    medals[j] = (Gold, Silver, Bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sorted_medal = sorted(medals.items(), key = lambda x: (-x[1][0], -x[1][1], -x[1][2], x[0]))
  for i, j in enumerate(sorted_medal):
    if i >= 5 and j[1] != sorted_medal[i - 1][1]:
      break
    topfive.append((j[0], j[1][0], j[1][1], j[1][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(int(start), int(end) + 1):
    if str(i) not in athletes_by_Year_NOC:
      continue
    if NOC not in athletes_by_Year_NOC[str(i)]:
      continue
    Gold, Silver, Bronze = 0, 0, 0
    for j in athletes_by_Year_NOC[str(i)][NOC]:
      if j['Medal'] == 'Gold':
        Gold += 1
      elif j['Medal'] == 'Silver':
        Silver += 1
      elif j['Medal'] == 'Bronze':
        Bronze += 1
    trend.append((str(i), Gold, Silver, Bronze))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  try:
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal'] != 'NA':
        sports.add(i['Sport'])
  except:
    pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for i, j in enumerate(NOCs):
    if i == 0:
      sports = get_sports(athletes_by_Year_NOC, j, year)
    sports.intersection_update(get_sports(athletes_by_Year_NOC, j, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532083021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1132, 'const': 1088, 'code+const': 2220}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    dict_of_info = list_2_dict(data[i])
    if data[i][9] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[data[i][9]] = {data[i][7]:[dict_of_info]}
    else:
      if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = [dict_of_info]
      else:
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(dict_of_info)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC.keys():
    for noc in athletes_by_Year_NOC[year]:
      medal = {"Gold":0, "Silver":0, "Bronze":0, "NA":0}
      for i in range(len(athletes_by_Year_NOC[year][noc])):
        medal[athletes_by_Year_NOC[year][noc][i]["Medal"]] += 1
      medal_gsb = (medal["Gold"], medal["Silver"], medal["Bronze"] )
      medals[noc] = medal_gsb
  return medals
#======================================
def get_top_five(medals):
  raw = [(-1*g,-1*s,-1*b, noc) for noc, (g,s,b) in medals.items()]
  raw = sorted(raw)
  if len(raw) <= 5:
    topfive = [(noc,abs(g), abs(s), abs(b)) for g,s,b, noc in raw]
  else:
    j = 1
    while raw[4][:3] == raw[4+j][:3]:
      j += 1
      if 4+j >= len(raw):
          break
    top_five_plus = raw[0:4+j] 
    topfive = [ (noc,abs(g), abs(s), abs(b)) for g,s,b, noc in top_five_plus]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  years = [str(y) for y in athletes_by_Year_NOC.keys() if int(y) >= start and int(y) <= end]
  years.sort()
  for ys in years:
    if NOC in athletes_by_Year_NOC[ys]:
      medals_report = get_medals_by_team(athletes_by_Year_NOC, ys)[NOC]
      medals_report = (ys,) + medals_report[:]
      trend.append(medals_report)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC.keys():
    if NOC in athletes_by_Year_NOC[year]:
      for i in range(len(athletes_by_Year_NOC[year][NOC])):
        if athletes_by_Year_NOC[year][NOC][i]["Medal"] != "NA":
          sp = athletes_by_Year_NOC[year][NOC][i]['Sport']
          sports.add(sp)
        else:
          pass
    else:
      pass
  else:
    pass
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sp = []
  for NOC in NOCs:
    sport = get_sports(athletes_by_Year_NOC, NOC, year)
    sp.append(sport)
  sports = sp[0]
  for j in range(1, len(sp)):
    sports = sports.intersection(sp[j])
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def list_2_dict(data_list):
  header = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
  out = {}
  for i in range(len(data_list)):
    out[header[i]] = data_list[i]
  return out

6532085321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 972, 'const': 984, 'code+const': 1956}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  if len(data) == 0:
    return athletes_by_Year_NOC
  cols = data[0]
  #  0      1      2      3       4            5      6       7      8        9        10        11     12        13       14   
  #['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
  for element in data[1:]:
    if element[9] not in athletes_by_Year_NOC: 
      athletes_by_Year_NOC[element[9]] = dict()
    if element[7] not in athletes_by_Year_NOC[element[9]]: 
      athletes_by_Year_NOC[element[9]][element[7]] = list()
    d = dict()
    for i in range(len(cols)):
      d[cols[i]] = element[i]
    athletes_by_Year_NOC[element[9]][element[7]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return medals
  for noc in athletes_by_Year_NOC[year]:
    g,s,b = 0,0,0
    for player in athletes_by_Year_NOC[year][noc]:
      if player['Medal'] == 'Gold':
        g += 1
      elif player['Medal'] == 'Silver':
        s += 1
      elif player['Medal'] == 'Bronze':
        b += 1
    medals[noc] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l = []
  for noc in  medals:
    l.append((-1*medals[noc][0],-1*medals[noc][1],-1*medals[noc][2],noc))
  l = sorted(l)
  for i in l[:5]:
    topfive.append((i[3],-1*i[0],-1*i[1],-1*i[2]))
  i = 5
  while i < len(l) and l[4][:3] == l[i][:3]:
    topfive.append((l[i][3],-1*l[i][0],-1*l[i][1],-1*l[i][2]))
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  start = int(start)
  if start % 2 != 0:
    start += 1
  for year in range(start,end+1,2):
    year = str(year)
    medals = get_medals_by_team(athletes_by_Year_NOC, year)
    if NOC in medals:
      trend.append((year,medals[NOC][0],medals[NOC][1],medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for player in athletes_by_Year_NOC[year][NOC]:
      if player['Medal'] != 'NA':
        sports.add(player['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if len(NOCs) == 0:
    return sports
  sports = get_sports(athletes_by_Year_NOC, list(NOCs)[0], year)
  for NOC in list(NOCs):
    sports.intersection_update(get_sports(athletes_by_Year_NOC, NOC, year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532096221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 998, 'const': 1092, 'code+const': 2090}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for e in data[1:]:
        dd = {}
        tt = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
        for i in range(len(tt)):
            dd[tt[i]] = e[i] 
        if e[9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[e[9]] = {}
            if e[7] not in athletes_by_Year_NOC[e[9]]:
                athletes_by_Year_NOC[e[9]][e[7]] = [dd]
            else:
                athletes_by_Year_NOC[e[9]][e[7]] += [dd]
        else:
            if e[7] not in athletes_by_Year_NOC[e[9]]:
                athletes_by_Year_NOC[e[9]][e[7]] = [dd]
            else:
                athletes_by_Year_NOC[e[9]][e[7]] += [dd]
    return athletes_by_Year_NOC
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    gold = 0
    silver = 0
    bronze = 0 
    for i in athletes_by_Year_NOC[year]:
        for e in athletes_by_Year_NOC[year][i]:
            if e["Medal"] == "Gold":
                gold += 1
            elif e["Medal"] == "Silver":
                silver += 1
            elif e["Medal"] == "Bronze":
                bronze += 1
            elif e["Medal"] == "NA":
                pass
        medals[i] = (gold, silver, bronze)
        gold = 0
        silver = 0
        bronze = 0
    return medals
def get_top_five(medals):
    topfive = []
    yy = []
    for i in medals:
        yy.append([-medals[i][0], -medals[i][1], -medals[i][2], i])
    yy.sort()
    for e in yy[:5]:
        topfive.append((e[3], -e[0], -e[1], -e[2]))
    a = yy[4]
    for n in yy[5:]:
        if a[:3] == n[:3]:
            topfive.append((n[3], -n[0], -n[1], -n[2]))
        else:
            break
    return topfive
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(end-start+1):
        if str(i+start) not in athletes_by_Year_NOC:
            pass
        elif NOC not in athletes_by_Year_NOC[str(i+start)]:
            pass
        else:
            mm = get_medals_by_team(athletes_by_Year_NOC, str(i+start))[NOC]
            trend.append((str(i+start), mm[0], mm[1], mm[2]))
    return trend
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC:
        pass
    elif NOC not in athletes_by_Year_NOC[year]:
        pass
    else:
        for kk in athletes_by_Year_NOC[year][NOC]:
            if kk["Medal"] in ["Gold", "Silver", "Bronze"]:
                sports.add(kk["Sport"])
    return sports
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    bb = []
    for i in NOCs:
        aa = get_sports(athletes_by_Year_NOC, i, year)
        bb += [aa]
        qq = aa
    for c in range(len(bb)):
        qq = bb[c].intersection(qq)
    sports = qq
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532099121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1198, 'const': 972, 'code+const': 2170}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  dict_s = {}
  dict_y = {}
  dict_n = {}
  for l in range(1,len(data)):
      for i in range(len(data[0])):
          dict_s[data[0][i]] = data[l][i]
      if data[l][9] in dict_y:
          dict_y[data[l][9]].append(dict_s)
      else:
          dict_y[data[l][9]] = [dict_s]
      dict_s = {}    
  for n in dict_y:
       for p in range(len(dict_y[n])):
         if dict_y[n][p]['NOC'] in dict_n:
           dict_n[dict_y[n][p]['NOC']].append(dict_y[n][p])
         else:
           dict_n[dict_y[n][p]['NOC']] = [dict_y[n][p]]
       athletes_by_Year_NOC[n] = dict_n
       dict_n = {}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
      for noc in athletes_by_Year_NOC[year]:
          m = [0,0,0]
          for l in range(len(athletes_by_Year_NOC[year][noc])):
              if athletes_by_Year_NOC[year][noc][l]['Medal'] == 'Gold':
                  m[0] += 1
              elif athletes_by_Year_NOC[year][noc][l]['Medal'] == 'Silver':
                  m[1] += 1
              elif athletes_by_Year_NOC[year][noc][l]['Medal'] == 'Bronze':
                  m[2] += 1
              medals[noc] = tuple(m)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a = []
  if len(medals) != 0:
    for k in medals: 
        a.append([medals[k],k])
    a.sort(reverse=True)
    num1 = a[0][0]
    re = [(a[0][1],)+a[0][0]]
    count = 1
    for i in range(1,len(a)):
        if a[i][0] == num1:
            re.insert(-(count),(a[i][1],)+a[i][0])
            count += 1
            num1= a[i][0]
        else:
            re.append((a[i][1],)+a[i][0])
            count = 1
            num1= a[i][0]
    topfive = re[0:5]
    for i in re[5:]:
        if i[1:] == re[4][1:]:
            topfive.append(i)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  y = [i for i in athletes_by_Year_NOC if start<=int(i)<=end]
  for year in y:
      d = get_medals_by_team(athletes_by_Year_NOC, year)
      if NOC in athletes_by_Year_NOC[year]:
          trend.append((year,)+d[NOC])
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
      if NOC in athletes_by_Year_NOC[year]:
          l = len(athletes_by_Year_NOC[year][NOC])
          for i in range(l):
            if athletes_by_Year_NOC[year][NOC][i]['Medal'] != 'NA':
                sports.add(athletes_by_Year_NOC[year][NOC][i]['Sport'])
  else:
      sports = set()
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    all_s = []
    for i in NOCs:
          s = get_sports(athletes_by_Year_NOC, i, year)
          all_s.append(s)
    first = all_s[0]
    for p in range(len(all_s)):
      first = first.intersection(all_s[p])
    sports = first
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532103021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1234, 'const': 1357, 'code+const': 2591}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
    if(data[i][9] not in athletes_by_Year_NOC):
      athletes_by_Year_NOC[data[i][9]] = dict()
      athletes_by_Year_NOC[data[i][9]][data[i][7]] = list()
      a = dict()
      for j in range(0,len(data[i])):      
        a[data[0][j]] = data[i][j]
      athletes_by_Year_NOC[data[i][9]][data[i][7]].append(a)
    else:
      if(data[i][7] not in athletes_by_Year_NOC[data[i][9]]):
        athletes_by_Year_NOC[data[i][9]][data[i][7]] = list()
      a = dict()
      for j in range(0,len(data[i])):      
        a[data[0][j]] = data[i][j]
      athletes_by_Year_NOC[data[i][9]][data[i][7]].append(a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for country in athletes_by_Year_NOC[year]:
    if(country not in medals):
      gold = silver = bronze = 0
      for i in range(0,len(athletes_by_Year_NOC[year][country])):
        medal = athletes_by_Year_NOC[year][country][i]['Medal']
        if(medal=="Gold"):
          gold+=1
        elif(medal=="Silver"):
          silver+=1
        elif(medal=="Bronze"):
          bronze+=1
      thistuple = (gold,silver,bronze)
      medals[country] = thistuple
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  data = []
  for i in medals:
    thistuple = (medals[i][0],medals[i][1],medals[i][2],i)
    data.append(thistuple)
  data = sorted(data, key=lambda x: (-x[0], -x[1], -x[2], x[3]))
  data2 = []
  if len(data)<=5:
    data2 = data
  else:
    for i in range(5):
      data2.append(data[i])
  a = 5
  con = True
  while(con):
      if(a>=len(data)):
        con = False
        break
      if(data[a][0]==data[4][0] and data[a][1]==data[4][1] and data[a][2]==data[4][2]):
        data2.append(data[a])
        a+=1
      else:
        con = False
        break
  for i in range(len(data2)):
    thistuple = (data[i][3],data[i][0],data[i][1],data[i][2])
    topfive.append(thistuple)
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    year = str(i)
    if year in athletes_by_Year_NOC:
      if(NOC in athletes_by_Year_NOC[year]):
        gold = silver = bronze = 0
        for j in athletes_by_Year_NOC[year][NOC]:
          medal = j['Medal']
          if(medal=="Gold"):
            gold+=1
          elif(medal=="Silver"):
            silver+=1
          elif(medal=="Bronze"):
            bronze+=1
        thistuple = (year,gold,silver,bronze)
        trend.append(thistuple)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if(year in athletes_by_Year_NOC):
    if(NOC in athletes_by_Year_NOC[year]):
      for i in athletes_by_Year_NOC[year][NOC]:
        medal = i['Medal']
        if(medal!="NA"):
          sports.add(i["Sport"])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  first = True
  for i in NOCs:
    if(first):
      sports = get_sports(athletes_by_Year_NOC, i, year)
      first = False
    else:
      tempset = get_sports(athletes_by_Year_NOC, i, year)
      sports = sports.intersection(tempset)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532107521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1954, 'const': 1234, 'code+const': 3188}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for x in data[1:]:
        player = {}
        NOC = {}
        for y in range(len(x)):
            player[data[0][y]] = x[y]
        p = [player]
        N = player['NOC']
        Y = player['Year']
        if Y in athletes_by_Year_NOC:
            if N in athletes_by_Year_NOC[Y]:
                athletes_by_Year_NOC[Y][N].append(player)
            else:
                N = player['NOC']
                Y = player['Year']
                athletes_by_Year_NOC[Y][N] = p
        else:
            NOC[N] = p
            athletes_by_Year_NOC[Y] = NOC
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
      for c in athletes_by_Year_NOC[year]:
          G = 0
          S = 0
          B = 0
          for x in range(len(athletes_by_Year_NOC[year][c])):
              if athletes_by_Year_NOC[year][c][x]['Medal'] == 'Gold':
                  G += 1
              elif athletes_by_Year_NOC[year][c][x]['Medal'] == 'Silver':
                  S += 1
              elif athletes_by_Year_NOC[year][c][x]['Medal'] == 'Bronze':
                  B += 1
          medals[c] = (G, S, B)
  return medals
#======================================
def get_top_five(medals):
    topfive = []
    co = []
    medal = []
    ma = []
    n = 1
    for x in medals:
        medal.append(medals[x])
        co.append(x)
    if medal == [] or co == []:
        return topfive
    if len(co) <= 5 or len(medal) <= 5:
        for x in range(len(co)):
            m = max(medal)
            if x == 0:
                c = co[medal.index(m)]
                tup = (c,) + m[:]
                ma.append(tup)
                co.pop(medal.index(m))
                medal.pop(medal.index(m))
                m2 = m
            else:
                if m == m2:
                    c = co[medal.index(m)]
                    tup = (c,) + m[:]
                    ma.append(tup)
                    co.pop(medal.index(m))
                    medal.pop(medal.index(m))
                else:
                    topfive += sorted(ma)
                    ma = []
                    m2 = m
                    c = co[medal.index(m)]
                    tup = (c,) + m[:]
                    ma.append(tup)
                    co.pop(medal.index(m))
                    medal.pop(medal.index(m))
            if x == len(co)-1 and x != 0:
                topfive += sorted(ma)
                ma = []
        topfive += sorted(ma)
        return topfive
    while n != 5:
        m = max(medal)
        if n == 1:
            c = co[medal.index(m)]
            tup = (c,) + m[:]
            ma.append(tup)
            co.pop(medal.index(m))
            medal.pop(medal.index(m))
            m2 = m
            n += 1
        else:
            if m == m2:
                c = co[medal.index(m)]
                tup = (c,) + m[:]
                ma.append(tup)
                co.pop(medal.index(m))
                medal.pop(medal.index(m))
                n += 1
            else:
                topfive += sorted(ma)
                ma = []
                m2 = m
                c = co[medal.index(m)]
                tup = (c,) + m[:]
                ma.append(tup)
                co.pop(medal.index(m))
                medal.pop(medal.index(m))
                n += 1
    m = max(medal)
    quant = medal.count(m)
    if m != m2:
        topfive += sorted(ma)
        ma = []
    if quant == 1:
        c = co[medal.index(m)]
        tup = (c,) + m[:]
        ma.append(tup)
        co.pop(medal.index(m))
        medal.pop(medal.index(m))
        topfive += sorted(ma)
    else:
        for i in range(quant):
            m = max(medal)
            c = co[medal.index(m)]
            tup = (c,) + m[:]
            ma.append(tup)
            co.pop(medal.index(m))
            medal.pop(medal.index(m))
        topfive += sorted(ma)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start, end+1):
        if str(y) in athletes_by_Year_NOC:
            L = athletes_by_Year_NOC[str(y)]
            if NOC in L:
                G = 0
                S = 0
                B = 0
                for x in range(len(L[NOC])):
                    if L[NOC][x]['Medal'] == 'Gold':
                        G += 1
                    elif L[NOC][x]['Medal'] == 'Silver':
                        S += 1
                    elif L[NOC][x]['Medal'] == 'Bronze':
                        B += 1
                med = (str(y), G, S, B)
                trend.append(med)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC:
        return sports
    L = athletes_by_Year_NOC[year]
    n = 0
    if NOC in L:
        for x in range(len(L[NOC])):
            if L[NOC][x]['Medal'] == 'Gold':
                sports.add(L[NOC][x]['Sport'])
            elif L[NOC][x]['Medal'] == 'Silver':
                sports.add(L[NOC][x]['Sport'])
            elif L[NOC][x]['Medal'] == 'Bronze':
                sports.add(L[NOC][x]['Sport'])
    else:
        return sports
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    n = 0
    if year in athletes_by_Year_NOC:
        L = athletes_by_Year_NOC[year]
        for x in NOCs:
            if x in L:
                if n == 0:
                    sports = get_sports(athletes_by_Year_NOC, x, year)
                    n += 1
                else:
                    sports = sports.intersection(get_sports(athletes_by_Year_NOC, x, year))
            else:
                return set()
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532108121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1184, 'const': 1449, 'code+const': 2633}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    item = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
    for d in data[1:]:
        if d[9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[d[9]] = {}
            athletes_by_Year_NOC[d[9]][d[7]] = [{item[n]: d[n] for n in range(15)}]
        else :
            if (d[7] not in athletes_by_Year_NOC[d[9]]):
                athletes_by_Year_NOC[d[9]][d[7]] = [{item[n]: d[n] for n in range(15)}]
            else :
                athletes_by_Year_NOC[d[9]][d[7]].append({item[n]: d[n] for n in range(15)})
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC:
        interested_year = athletes_by_Year_NOC[year]
        for NOC in interested_year :
            G, S, B = 0, 0, 0
            for person in athletes_by_Year_NOC[year][NOC] :
                if person['Medal'] == 'Gold' :
                    G += 1
                elif person['Medal'] == 'Silver' :
                    S += 1
                elif person['Medal'] == 'Bronze' :
                    B += 1
            medals[NOC] = (G, S, B)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    all = []
    for NOC in medals:
        medal = list(medals[NOC])
        medal = [-x for x in medal]
        medal.append(NOC)
        all.append(medal)
    all.sort()
    all = [tuple(x[3:] + [-y for y in x[:3]]) for x in all]
    topfive = all[:5]
    for n in range(5,len(all)):
        if (tuple(all[n])[1], tuple(all[n])[2], tuple(all[n])[3]) == (topfive[4][1], topfive[4][2], topfive[4][3]):
            topfive.append(tuple(all[n]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start, end+1) :
        year = str(year)
        if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
            G, S, B = 0, 0, 0
            for person in athletes_by_Year_NOC[year][NOC] :
                if person['Medal'] == 'Gold' :
                    G += 1
                elif person['Medal'] == 'Silver' :
                    S += 1
                elif person['Medal'] == 'Bronze' :
                    B += 1
            trend.append((year, G, S, B))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
      for person in athletes_by_Year_NOC[year][NOC]:
          if person['Medal'] != 'NA':
              sports.add(person['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    NOCs_sports = []
    for NOC in NOCs:
        NOC_sports = list(get_sports(athletes_by_Year_NOC, NOC, year))
        NOCs_sports.append([-len(NOC_sports)] + NOC_sports)
    NOCs_sports.sort()
    if len(NOCs_sports) != 0:
        for sport in NOCs_sports[0][1:]:
            have = True
            for entry in NOCs_sports[1:]:
                if sport not in entry:
                    have = False
            if have :
                sports.add(sport)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532112621: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1000, 'const': 1645, 'code+const': 2645}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    title = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
    for i in range(1,len(data)):
        eachdata = dict()
        for j in range(len(title)):
            eachdata[title[j]] = data[i][j]
        year = data[i][9]
        noc = data[i][7]
        if year in athletes_by_Year_NOC:
            if noc in athletes_by_Year_NOC[year]:
                athletes_by_Year_NOC[year][noc].append(eachdata)
            else:
                athletes_by_Year_NOC[year][noc] = [eachdata]
        else:
            athletes_by_Year_NOC[year] = {noc:[eachdata]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    allteam = athletes_by_Year_NOC[year]
    for country in allteam:
        count = [0,0,0]
        for people in allteam[country]:
            if people["Medal"] == "Gold":
                count[0] += 1
            if people["Medal"] == "Silver":
                count[1] += 1
            if people["Medal"] == "Bronze":
                count[2] += 1
        medals[country] = tuple(count)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    compare = []
    for con in medals:
        lis =[]
        for i in medals[con]:
            lis.append(i)
        lis.append(con)
        compare.append(lis)     
    compare.sort(key=lambda x: x[-1])
    compare.sort(key=lambda x: x[:-1], reverse=True)
    if len(compare) > 5:
        ans = compare[:5]
        for x in range(5,len(compare)):
            if compare[x][:3] == ans[-1][:3]:
                ans.append(compare[x])
            else:
                break
    else:
        ans = compare
    for x in ans:
        topfive.append((x[3],x[0],x[1],x[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in athletes_by_Year_NOC:
        if int(year) in range(start,end+1):
            if NOC in athletes_by_Year_NOC[year]:
                a = [0,0,0]
                for layer in athletes_by_Year_NOC[year][NOC]:
                    if layer["Medal"] == "Gold":
                        a[0] += 1
                    if layer["Medal"] == "Silver":
                        a[1] += 1
                    if layer["Medal"] == "Bronze":
                        a[2] += 1
                trend.append((year,a[0],a[1],a[2]))
        trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for people in athletes_by_Year_NOC[year][NOC]:
                if people['Medal'] != "NA":
                    valid = people['Sport']
                    sports.add(valid)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if len(NOCs) == 0:
        return set()
    else:
        checksame = list(NOCs)
        sports = get_sports(athletes_by_Year_NOC, checksame[0], year)
        for c in checksame:
            d = get_sports(athletes_by_Year_NOC, c, year)
            sports = sports&d
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532115521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 888, 'const': 1024, 'code+const': 1912}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1, len(data)):
    year = data[i][9]; NOC = data[i][7]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if NOC not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][NOC] = []
    athletes_by_Year_NOC[year][NOC].append({})
    for j in range(15):
      athletes_by_Year_NOC[year][NOC][-1][data[0][j]] = data[i][j]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for NOC in athletes_by_Year_NOC[year]:
      gold = 0; silver = 0; bronze = 0
      for data in athletes_by_Year_NOC[year][NOC]:
        if data['Medal'] == "Gold":
          gold += 1
        elif data['Medal'] == "Silver":
          silver += 1
        elif data['Medal'] == "Bronze":
          bronze += 1
      medals[NOC] = (gold, silver, bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  list_medal = []
  for NOC in medals:
    found = False
    for i in range(len(list_medal)):
      if list_medal[i][0] == medals[NOC]:
        list_medal[i][1].append(NOC)
        found = True
    if found == False:
      list_medal.append([medals[NOC], [NOC]])
  list_medal.sort()
  list_medal = list_medal[::-1]
  n = 0; i = 0
  while n < 5 and i < len(list_medal):
    list_medal[i][1].sort()
    for NOC in list_medal[i][1]:
      topfive.append((NOC, list_medal[i][0][0], list_medal[i][0][1], list_medal[i][0][2]))
      n += 1
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  y=start
  while y<=end:
    year = str(y)
    medals = get_medals_by_team(athletes_by_Year_NOC, year)
    if NOC in medals:
      trend.append((year, medals[NOC][0], medals[NOC][1], medals[NOC][2]))
    y += 1
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for data in athletes_by_Year_NOC[year][NOC]:
        if data['Medal'] != 'NA':
          sports.add(data['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  isInitial = False
  for NOC in NOCs:
    if isInitial == False:
      sports = get_sports(athletes_by_Year_NOC, NOC, year)
      isInitial = True
    sports &= get_sports(athletes_by_Year_NOC, NOC, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532116121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1042, 'const': 1008, 'code+const': 2050}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  fields = data[0]
  for i in range(1, len(data)) :
    temp_dict = {}
    for j in range(len(fields)) :
      temp_dict[fields[j]] = data[i][j]
    if data[i][9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[data[i][9]] = {data[i][7] : []}
    elif data[i][7] not in athletes_by_Year_NOC[data[i][9]] :
      athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
    athletes_by_Year_NOC[data[i][9]][data[i][7]].append(temp_dict)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for NOC in athletes_by_Year_NOC[year] :
    if NOC not in medals :
      medals[NOC] = [0, 0, 0]
    for data in athletes_by_Year_NOC[year][NOC] :
      if data['Medal'] == "Gold" :
        medals[NOC][0] += 1
      elif data['Medal'] == "Silver" :
        medals[NOC][1] += 1
      elif data['Medal'] == "Bronze" :
        medals[NOC][2] += 1
    medals[NOC] = tuple(medals[NOC])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  sorted_medal = []
  for NOC, medal in medals.items() :
    sorted_medal.append(((-medal[0], -medal[1], -medal[2]), NOC))
  sorted_medal.sort()
  for i in range(5) :
    topfive.append([sorted_medal[i][1], -sorted_medal[i][0][0], -sorted_medal[i][0][1], -sorted_medal[i][0][2]])
  for i in range(5, len(sorted_medal)) :
    if topfive[-1][1:] == [-sorted_medal[i][0][0], -sorted_medal[i][0][1], -sorted_medal[i][0][2]] :
      topfive.append([sorted_medal[i][1], -sorted_medal[i][0][0], -sorted_medal[i][0][1], -sorted_medal[i][0][2]])
    else :
      break
  for i in range(len(topfive)) :
    topfive[i] = tuple(topfive[i])
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year_int in range(start, end + 1) :
    year = str(year_int)
    if year in athletes_by_Year_NOC :
      medals = get_medals_by_team(athletes_by_Year_NOC, year)
      if NOC in medals :
        trend.append((year, medals[NOC][0], medals[NOC][1], medals[NOC][2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year] :
    for data in athletes_by_Year_NOC[year][NOC] :
      if data['Medal'] != 'NA' :
        sports.add(data['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  initial = False
  for NOC in NOCs :
    if initial == False :
      sports = get_sports(athletes_by_Year_NOC, NOC, year)
      initial = True
    sports &= get_sports(athletes_by_Year_NOC, NOC, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532119021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 850, 'const': 1028, 'code+const': 1878}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for c in data[1:]:
    Year = c[9]
    NOC = c[7]
    if Year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[Year] = dict()
    if NOC not in athletes_by_Year_NOC[Year]:
      athletes_by_Year_NOC[Year][NOC] = list()
    d = data[0]
    new_c = {d[i]: c[i] for i in range(len(d))}
    athletes_by_Year_NOC[Year][NOC].append(new_c)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {}
  for NOC in athletes_by_Year_NOC[year]:
    count = [0,0,0]
    Gold = count[0]
    Silver = count[1]
    Bronze = count[2]
    for athletes in athletes_by_Year_NOC[year][NOC]:
      if athletes['Medal'] == 'Gold':
        Gold += 1
      elif athletes['Medal'] == 'Silver':
        Silver += 1
      elif athletes['Medal'] == 'Bronze':
        Bronze += 1
    medals[NOC] = tuple( [Gold, Silver, Bronze] ) 
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  rankByMedal = {}
  for country in medals:
    medall = medals[country]
    if medall in rankByMedal:
      rankByMedal[medall].append(country)
    else:
      rankByMedal[medall] = [country]
  for rank in sorted(rankByMedal.keys(),reverse = True):
    for e in range(5):
      if e >= len(rank):
        break
    for country in sorted(rankByMedal[rank]):
      topfive.append(tuple([country,rank[0],rank[1],rank[2]]))
    if len(topfive) >= 5:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = list()
  for year in range(start, end+1):
    a = get_medals_by_team(athletes_by_Year_NOC, str(year))
    if year % 2 != 0 or NOC not in a:
      continue
    else:
      medals = a[NOC]
      trend.append((str(year), medals[0], medals[1], medals[2]))
  return trend 
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC or NOC not in athletes_by_Year_NOC[year]:
    return sports
  for athletes in athletes_by_Year_NOC[year][NOC]:
    if athletes['Medal'] == 'NA':
      continue
    else:
      sports.add(athletes['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  sportsbyNOC = [get_sports(athletes_by_Year_NOC, NOC, year) for NOC in NOCs]
  sports = sportsbyNOC[0]
  for e in sportsbyNOC:
    sports = sports.intersection(e)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532126421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1110, 'const': 905, 'code+const': 2015}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  columns = data[0]
  y_i = columns.index('Year')
  n_i = columns.index('NOC')
  athletes_by_Year_NOC = {}
  for i in data[1:]:
    year = i[y_i]
    noc = i[n_i]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year] = {}
    if noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc] = []
    athletes_by_Year_NOC[year][noc].append({columns[ind]:i[ind] for ind in range(len(columns))})
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {i:[0,0,0] for i in athletes_by_Year_NOC[year]}
  ind = ['Gold','Silver','Bronze']
  for i in athletes_by_Year_NOC[year]:
    for a in athletes_by_Year_NOC[year][i]:
      if a['Medal'] != 'NA':
        medals[i][ind.index(a['Medal'])] +=1
  medals = {i:tuple(medals[i]) for i in medals}
  return medals
#======================================
def get_top_five(medals):
  data = sorted([[int(k) for k in medals[i]]+[i] for i in medals])
  if len(data) == 0:
    return []
  lis = [[data[0][:3],data[0][3]]]
  for i in data[1:]:
    if lis[-1][0] != i[:3]:
      lis.append([i[:3],i[3]])
    else:
      lis[-1].append(i[3])
  topfive = []
  n = 0
  for i in lis[::-1]:
    for a in i[1:]:
      topfive.append(tuple([a]+i[0]))
      n+=1
    if n>=5:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  year = sorted([int(i) for i in range(start,end+1) if str(i) in athletes_by_Year_NOC])
  trend = []
  for i in year:
    m = get_medals_by_team(athletes_by_Year_NOC, str(i))
    if NOC in m:
      trend.append(tuple([str(i)]+list(m[NOC])))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      sports = set([i['Sport'] for i in athletes_by_Year_NOC[year][NOC] if i['Medal'] != 'NA'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  lis = [get_sports(athletes_by_Year_NOC, i, year) for i in NOCs]
  if lis == []:
    return set()
  sports = []
  for a in lis[0]:
    if sum([int(a in i) for i in lis[1:]])==len(lis[1:]):
        sports.append(a)
  sports = set(sports)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532127021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 884, 'const': 1253, 'code+const': 2137}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  header = data[0]
  rows = data[1:]
  for row in rows:
    year = row[9]
    noc = row[7]
    t = {}
    for i in range(15):
      t[header[i]] = row[i]
    if not year in athletes_by_Year_NOC.keys():
      athletes_by_Year_NOC[year] = {}
    if not noc in athletes_by_Year_NOC[year].keys():
      athletes_by_Year_NOC[year][noc] = []
    athletes_by_Year_NOC[year][noc]+=[t]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if not year in athletes_by_Year_NOC:
    return {}
  for noc in athletes_by_Year_NOC[year].keys():
    medals_count = {'Gold':0, 'Silver':0, 'Bronze':0, 'NA':0}
    for i in athletes_by_Year_NOC[year][noc]:
      medals_count[i['Medal']]+=1
    medals[noc] = (medals_count['Gold'], medals_count['Silver'], medals_count['Bronze'])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  items = [(noc,medals[noc][0],medals[noc][1],medals[noc][2]) for noc in medals.keys()]
  items = sorted(items, key=lambda x: (-x[1],-x[2],-x[3],x[0]))
  i = 0
  while i < len(items) and (i < 5 or items[4][1:] == items[i][1:]):
    topfive+=[items[i]]
    i+=1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  start = start + 1 if start % 2 == 1 else start
  for i in range(start,end+1,2):
    ret = get_medals_by_team(athletes_by_Year_NOC, str(i))
    if NOC in ret.keys():
      trend+=[(str(i),ret[NOC][0],ret[NOC][1],ret[NOC][2])]
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC.keys() and NOC in athletes_by_Year_NOC[year].keys():
    for i in athletes_by_Year_NOC[year][NOC]:
      if i['Medal'] in ['Gold', 'Silver', 'Bronze']:
        sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  if not NOCs:
    return set()
  NOCs = list(NOCs)
  sports = get_sports(athletes_by_Year_NOC, NOCs[0], year)
  for i in NOCs[1:]:
    ret = get_sports(athletes_by_Year_NOC, i, year)
    sports = sports.intersection(ret)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532131521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 900, 'const': 937, 'code+const': 1837}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  idy = data[0].index('Year')
  idn = data[0].index('NOC')
  for i in data[1:]:
    if i[idy] not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[i[idy]] = {}
    if i[idn] not in athletes_by_Year_NOC[i[idy]]:
      athletes_by_Year_NOC[i[idy]][i[idn]] = []
    dic = {}
    for j,v in enumerate(data[0]):
      dic[v] = i[j]
    athletes_by_Year_NOC[i[idy]][i[idn]].append(dic)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {} 
  for country in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for people in athletes_by_Year_NOC[year][country]:
      pm = people['Medal']
      if pm == 'Gold': g+=1
      elif pm == 'Silver': s+=1
      elif pm == 'Bronze': b+=1
    medals[country] = (g,s,b)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  al = []
  for c in medals:
    al.append([-medals[c][0],-medals[c][1],-medals[c][2],c])
  al.sort()
  for i in range(len(al)):
    if i<5:
      topfive.append((al[i][3],-al[i][0],-al[i][1],-al[i][2]))
    elif al[i-1][:3] == al[i][:3]:
      topfive.append((al[i][3],-al[i][0],-al[i][1],-al[i][2]))
    else:
      break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in athletes_by_Year_NOC:
    if start <= int(y) <= end:
      dm = get_medals_by_team(athletes_by_Year_NOC,y)
      if NOC in dm:
        trend.append((y,dm[NOC][0],dm[NOC][1],dm[NOC][2]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:pass
  elif NOC not in athletes_by_Year_NOC[year]:pass
  else:
    for people in athletes_by_Year_NOC[year][NOC]:
      if people['Medal'] != 'NA':
        sports.add(people['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  if len(NOCs) == 0: return set()
  sports = get_sports(athletes_by_Year_NOC,NOCs.pop(),year)
  for i in NOCs:
    sports = sports & get_sports(athletes_by_Year_NOC,i,year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532133821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 884, 'const': 812, 'code+const': 1696}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  h = data[0]
  for a in data[1:]:
    y = a[9]
    n = a[7]
    if y not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[y] = {}
      athletes_by_Year_NOC[y][n] = []
    elif n not in athletes_by_Year_NOC[y]:
      athletes_by_Year_NOC[y][n] = []
    b = {}
    for i in range(len(h)):
      b[h[i]] = a[i]
    athletes_by_Year_NOC[y][n].append(b)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
    return {}
  for n in athletes_by_Year_NOC[year]:
    g = 0
    s = 0
    b = 0
    for a in athletes_by_Year_NOC[year][n]:
      m = a['Medal']
      if m == 'Gold':
        g += 1
      elif m == 'Silver':
        s += 1
      elif m == 'Bronze':
        b += 1
    medals[n] = (g, s, b) 
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  a = []
  for n in medals:
    g, s, b = medals[n]
    m = (-g, -s, -b, n)
    a.append(m)
  a.sort()
  c = []
  for e in a:
    g, s, b, n = e
    m = (n, -g, -s, -b)
    c.append(m)
  topfive = c[:5]
  i = 5
  while i < len(c):
    if c[i][1] == c[i-1][1] and c[i][2] == c[i-1][2] and c[i][3] == c[i-1][3]:
      topfive.append(c[i])
    else:
      break
    i += 1
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for y in range(start, end+1):
    y = str(y)
    if y in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[y]:
      g, s, b = get_medals_by_team(athletes_by_Year_NOC, y)[NOC]
      m = (y, g, s, b)
      trend.append(m)
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for a in athletes_by_Year_NOC[year][NOC]:
      m = a['Medal']
      s = a['Sport']
      if m != 'NA':
        sports.add(s)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = list(NOCs)[0]
  sports = get_sports(athletes_by_Year_NOC, a, year)
  for n in NOCs:
    b = get_sports(athletes_by_Year_NOC, n, year)
    sports = sports.intersection(b)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532135021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 996, 'const': 956, 'code+const': 1952}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    d={}
    for e in data[1:]:
        year=e[9]
        noc=e[7]
        if year not in d:
            d[year]={}
        if noc not in d[year]:
            d[year][noc]=[]
        din={}
        for k in range(len(data[0])):
            din[data[0][k]]=e[k]
        d[year][noc].append(din)
    return d
#======================================
def get_medals_by_team(d,year):
    medals={}
    if year not in d:pass
    else:
      for noc in d[year]:
          g=0
          s=0
          b=0
          if noc not in medals:
              medals[noc]=()
          for me in d[year][noc]:
              if me['Medal']=='Gold':
                  g+=1
              if me['Medal']=='Silver':
                  s+=1
              if me['Medal']=='Bronze':
                  b+=1
          medals[noc]+=(g,s,b)    
    return medals
#======================================
def get_top_five(medals):
    topfive=[]
    l=[]
    for e in medals:
        l.append((medals[e],e))
    l.sort()
    l=l[::-1]
    for i in range(len(l)):
        for j in range(i,len(l)):
            if l[i][0]==l[j][0]:
                if l[i][1]>l[j][1]:
                    l[i],l[j]=l[j],l[i]
    listto=l[:5]
    if len(l)<=5:pass
    else:
      for e in l[5:]:
          if e[0]==listto[-1][0]:
              listto.append(e)
    for x in listto:
        topfive.append((x[1],x[0][0],x[0][1],x[0][2]))
    return topfive
#======================================
def get_medals_trend(d,noc,start,end):
    l=[]
    for i in range(start,end+1):
        if str(i) not in d:pass
        else:
          med=get_medals_by_team(d,str(i))
          if noc not in med:pass
          else:l.append((str(i),med[noc]))
    lilly=[]
    for e in l:
        lilly.append((e[0],e[1][0],e[1][1],e[1][2]))
    return lilly
#======================================
def get_sports(d,noc,year):
    sports=set()
    if year not in d:
        return sports
    if noc not in d[year]:
        return sports
    else:
        dnyl=d[year][noc]
        for dictto in dnyl:
            if dictto['Sport'] not in sports and dictto['Medal']!='NA':
                sports.add(dictto['Sport'])        
    return sports
#======================================
def get_common_sports(d,nocs,year):
    l=[]
    for noc in nocs:
        l.append(get_sports(d,noc,year))
    mimie=l[0]
    for i in range(1,len(l)):
        mimie=mimie.intersection(l[i])
    return mimie
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532140121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 886, 'const': 1076, 'code+const': 1962}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    dicsm = {}
    dicsmlst = []
    nocdic = {}
    for inf in data[1:]:
        for j in range(len(data[0])):
            dicsm.update({data[0][j] : inf[j]})
        dicsmlst.append(dicsm)
        year = inf[9]
        noc = inf[7]
        if year in athletes_by_Year_NOC :
            if noc in athletes_by_Year_NOC[year] :
                athletes_by_Year_NOC[year][noc].append(dicsm)
            else :
                athletes_by_Year_NOC[year][noc] = dicsmlst
        else :
            #no noc and no year
            nocdic.update({noc:dicsmlst})
            athletes_by_Year_NOC.update({year:nocdic})
            nocdic = {}
        dicsm = {}
        dicsmlst = []
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    nocdic = athletes_by_Year_NOC[year]
    for noc in nocdic :
        g=0
        s=0
        b=0
        for det in nocdic[noc]:
            med = det['Medal']
            if med == 'Gold' :
                g+=1
            elif med == 'Silver' :
                s+=1
            elif med == 'Bronze' :
                b+=1
        medals.update({noc : (g,s,b)})
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    sortmed = sorted(medals.values(),reverse = True)
    alst = []
    long = 0
    for noc in sortmed :
        if noc not in alst and len(alst) <= 4 :
            alst.append(noc)
        elif noc in alst:
            alst.append(noc)
    for med in alst :
        for noc in sorted(medals.keys()) :
            if medals[noc] == med :
                if (noc,med[0],med[1],med[2]) not in topfive :
                    topfive.append((noc,med[0],med[1],med[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
        if str(y) in athletes_by_Year_NOC :
            if NOC in get_medals_by_team(athletes_by_Year_NOC, str(y)):
                med = get_medals_by_team(athletes_by_Year_NOC, str(y))[NOC]
                tup=(str(y),med[0],med[1],med[2])
                trend.append(tup)
            else :
                pass
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if str(year) in athletes_by_Year_NOC.keys() and         NOC in athletes_by_Year_NOC[str(year)].keys():
        for person in athletes_by_Year_NOC[year][NOC]:
                if person['Medal'] == 'Gold' or person['Medal'] == 'Silver'                    or person['Medal'] == 'Bronze' :
                    sports.add(person['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    count = 0
    for noc in NOCs :
        inter = get_sports(athletes_by_Year_NOC, noc, year)
        if count == 0 :
            sports = inter
        else :
            sports = sports & inter
        count += 1
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532149921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 904, 'const': 1016, 'code+const': 1920}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    if len(data) == 1: return athletes_by_Year_NOC
    for d in data[1:]:
        year = d[data[0].index('Year')]
        noc = d[data[0].index('NOC')]
        if year not in athletes_by_Year_NOC.keys(): athletes_by_Year_NOC[year] = dict()
        if noc not in athletes_by_Year_NOC[year].keys(): athletes_by_Year_NOC[year][noc] = []
        inp = dict()
        head = data[0]
        for i in range(len(head)):
            inp[head[i]] = d[i]
        athletes_by_Year_NOC[year][noc].append(inp)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC.keys(): return medals
    ath_noc = athletes_by_Year_NOC[year]
    medal_summary = dict()
    for noc,li_ath in ath_noc.items():
        g = 0
        s = 0
        b = 0
        for ath in li_ath:
            medal = ath['Medal']
            if medal == 'NA': continue
            elif medal == 'Bronze': b += 1
            elif medal == 'Silver': s += 1
            elif medal == 'Gold': g += 1
        medals[noc] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    li = []
    for k,v in medals.items():
        li.append([-v[0],-v[1],-v[2],k])
    li.sort()
    for l in li:
        if len(topfive) >= 5 and (topfive[4][1],topfive[4][2],topfive[4][3]) != (-l[0],-l[1],-l[2]):break
        topfive.append((l[3],-l[0],-l[1],-l[2]))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    years = athletes_by_Year_NOC.keys()
    for year in range(start,end+1):
        if str(year) not in years: continue
        medals_by_team = get_medals_by_team(athletes_by_Year_NOC,str(year))
        if NOC not in medals_by_team.keys(): continue
        medals = medals_by_team[NOC]
        trend.append((str(year), medals[0], medals[1],medals[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year not in athletes_by_Year_NOC.keys(): return sports
    if NOC not in athletes_by_Year_NOC[year].keys(): return sports
    li_ath = athletes_by_Year_NOC[year][NOC]
    for ath in li_ath:
        if ath['Medal'] == 'NA': continue
        sports.add(ath['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set() 
    li = []
    for noc in NOCs:
        li.append(get_sports(athletes_by_Year_NOC,noc,year))
    sports = li[0]
    for s in li:
        sports = sports & s
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532150421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 942, 'const': 1112, 'code+const': 2054}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    a = data[0]
    for e in data[1::1]:
        year = e[9]
        NOC = e[7]
        if year not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[year] = {}
        if NOC not in athletes_by_Year_NOC[year]:
            athletes_by_Year_NOC[year][NOC] = [{a[i]:e[i] for i in range(len(a))}]
        else:
            athletes_by_Year_NOC[year][NOC].append({a[i]:e[i] for i in range(len(a))})
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for k,v in athletes_by_Year_NOC[year].items():
        if k not in medals:
            medals[k] = [0, 0, 0]
        for e in v:
            if e["Medal"] == "Gold":
                medals[k][0] += 1
            elif e["Medal"] == "Silver":
                medals[k][1] += 1
            elif e["Medal"] == "Bronze":
                medals[k][2] += 1
    for k,v in medals.items():
        medals[k] = tuple(v)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    sm = [ ((-medals[e][0], -medals[e][1], -medals[e][2]), e) for e in medals.keys()]
    sm.sort()
    ans = sm[:5]
    for i in range(5,len(sm)):
        if (ans[-1][0] == sm[i][0]):
            ans.append(sm[i])
        else:
            break
    topfive = [(e[1], -e[0][0], -e[0][1], -e[0][2]) for e in ans]
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
        y = str(y)
        if y in athletes_by_Year_NOC:
            medals = get_medals_by_team(athletes_by_Year_NOC, y)
            if NOC in medals:
                t = medals[NOC]
                trend.append((y, t[0], t[1], t[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        data = athletes_by_Year_NOC[year][NOC]
        for e in data:
            if not e["Medal"] == "NA":
                sports.add(e["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    first = True
    for noc in NOCs:
        if first:
            sports = get_sports(athletes_by_Year_NOC, noc, year)
            first = False
        else:
            sports &= get_sports(athletes_by_Year_NOC, noc, year)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532153321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1160, 'const': 1016, 'code+const': 2176}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)) :
        if data[i][data[0].index('Year')] in athletes_by_Year_NOC :
            if data[i][data[0].index('NOC')] in athletes_by_Year_NOC[data[i][data[0].index('Year')]] :
                athletes_by_Year_NOC[data[i][data[0].index('Year')]][data[i][data[0].index('NOC')]] += [list_to_dict(data[0],data[i])] 
            else :
                athletes_by_Year_NOC[data[i][data[0].index('Year')]][data[i][data[0].index('NOC')]] = [list_to_dict(data[0],data[i])]
        else :
            athletes_by_Year_NOC[data[i][data[0].index('Year')]] = {data[i][data[0].index('NOC')]:[list_to_dict(data[0],data[i])]}
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC :
        for NOC in athletes_by_Year_NOC[year] :
            medal = {'Gold':0 , 'Silver':0 , 'Bronze':0}
            for e in athletes_by_Year_NOC[year][NOC] :
                if e['Medal'] != 'NA' :
                    medal[e['Medal']] += 1
            medals[NOC] = (medal['Gold'],medal['Silver'],medal['Bronze'])
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medals_sort = []
    for e in medals :
        medals_sort.append((-medals[e][0],-medals[e][1],-medals[e][2],e))
    medals_sort.sort()
    medals_sort_dict = {}
    for i in range(len(medals_sort)) :
        if tuple([abs(e) for e in medals_sort[i][:-1]]) in medals_sort_dict :
            medals_sort_dict[tuple([abs(e) for e in medals_sort[i][:-1]])] += list(medals_sort[i][-1:])
        else :
            medals_sort_dict[tuple([abs(e) for e in medals_sort[i][:-1]])] = list(medals_sort[i][-1:])
    for e in medals_sort_dict :
        if len(topfive) < 5 :
            for k in medals_sort_dict[e] :
                topfive.append((k,) + e)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1) :
        if str(i) in athletes_by_Year_NOC :
            if NOC in athletes_by_Year_NOC[str(i)] :
                trend.append((str(i),) + get_medals_by_team(athletes_by_Year_NOC,str(i))[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            for e in athletes_by_Year_NOC[year][NOC] :
                if e['Medal'] != 'NA' :
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sports_list = []
    if year in athletes_by_Year_NOC :
        for e in NOCs :
            if e in athletes_by_Year_NOC[year] :
                sports_list.append(get_sports(athletes_by_Year_NOC, e, year))
            else :
                sports_list.append(set())
    sports = sports_list[0]
    for e in sports_list :
        sports = sports & e
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def list_to_dict(key,info) :
    return_dict = {}
    for i in range(len(key)) :
        return_dict[key[i]] = info[i]
    return return_dict

6532156221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 940, 'const': 1160, 'code+const': 2100}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)):
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]]={}
        if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]]=[]
        kept = {}
        for j in range(len(data[i])):
            kept[data[0][j]] = data[i][j]
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(kept)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    gold = 0
    sil = 0
    bronz = 0
    for i in athletes_by_Year_NOC[year]:
        for j in athletes_by_Year_NOC[year][i]:
            medal = j['Medal']
            if medal == 'Gold':
                gold += 1
            elif medal == 'Silver':
                sil += 1
            elif medal == 'Bronze':
                bronz += 1
            else:
                pass
        medals[i] = (gold,sil,bronz)
        gold = 0
        sil = 0
        bronz = 0
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    for i in medals.items():
        topfive.append((i[0],i[1][0],i[1][1],i[1][2]))
    topfive.sort()
    topfive.sort(reverse=True, key=lambda x: x[3])
    topfive.sort(reverse=True, key=lambda x: x[2])
    topfive.sort(reverse=True, key=lambda x: x[1])
    ans = topfive[:5]
    for i in range(5, len(topfive)):
        if topfive[4][1] == topfive[i][1] and topfive[4][2] == topfive[i][2] and topfive[4][3] == topfive[i][3]:
            ans.append(topfive[i])
        else: break
    topfive = ans
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1):
        if str(year) in athletes_by_Year_NOC:
            if NOC in athletes_by_Year_NOC[str(year)]:
                x = get_medals_by_team(athletes_by_Year_NOC, str(year))[NOC]
                trend.append((str(year),x[0],x[1],x[2]))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
        info = athletes_by_Year_NOC[year][NOC]
        for d in info:
            if d["Medal"] != "NA":
                sports.add(d["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    isFirst = True
    for NOC in NOCs:
        sport = get_sports(athletes_by_Year_NOC, NOC, year)
        if isFirst == True:
            sports = sport
            isFirst = False
        else:
            sports = set.intersection(sport,sports)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532158521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1084, 'const': 973, 'code+const': 2057}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  l = []
  for i in range(1,len(data)):
    a = {}
    for j in range(len(data[0])):
      a[data[0][j]] = data[i][j]
    l.append(a)
  year = {}
  for e in l:
    y = e['Year']
    n = e['NOC']
    if y not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[y] = {}
      if n not in athletes_by_Year_NOC[y]:
        athletes_by_Year_NOC[y][n] = [e]
      else:
        athletes_by_Year_NOC[y][n].append(e)
    else:
      if n not in athletes_by_Year_NOC[y]:
        athletes_by_Year_NOC[y][n] = [e]
      else:
        athletes_by_Year_NOC[y][n].append(e)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for noc in athletes_by_Year_NOC[year]:
    if noc not in medals:
      medals[noc] = [0]*3
      for e in athletes_by_Year_NOC[year][noc]:
        if e['Medal'] == 'Gold':
          medals[noc][0] += 1
        elif e['Medal'] == 'Silver':
          medals[noc][1] += 1
        elif e['Medal'] == 'Bronze':
          medals[noc][2] += 1
    else:
      if athletes_by_Year_NOC[year][noc]['Medal'] == 'Gold':
        medals[noc][0] += 1
      elif athletes_by_Year_NOC[year][noc]['Medal'] == 'Silver':
        medals[noc][1] += 1
      elif athletes_by_Year_NOC[year][noc]['Medal'] == 'Bronze':
        medals[noc][2] += 1
  for k in medals:
    medals[k] = tuple(medals[k])
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  l = []
  for k in medals:
    x = []
    for e in medals[k]:
      x += [-e]
    x += [k]
    l.append(x)
  l.sort()
  i = 5
  a = l[4][:3]
  for e in l[5:]:
    if e[:3] == a:
      i += 1
    else: break
  t = l[:i]
  for g,s,b,noc in t:
    topfive.append((noc,-g,-s,-b))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  s = start
  while True:
    if str(s) in athletes_by_Year_NOC:
      t = get_medals_by_team(athletes_by_Year_NOC, str(s))
      a = (str(s),)
      if NOC in t:
        m = t[NOC]
        for e in m:
          a += (e,)
        trend.append(a)
    if s == end: break
    s += 1
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC:
    return sports
  if NOC not in athletes_by_Year_NOC[year]:
    return sports
  g = athletes_by_Year_NOC[year][NOC]
  for e in g:
    if e['Medal'] != 'NA':
      sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  l = []
  for e in NOCs:
    g = get_sports(athletes_by_Year_NOC, e, year)
    l.append(g)
  sports = l[0]
  for e in l[1:]:
    sports &= e
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532160721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1036, 'const': 1241, 'code+const': 2277}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)) : #YEAR = data[i][9]
        if data[i][9] not in athletes_by_Year_NOC :
            athletes_by_Year_NOC[data[i][9]] = {}
    #print(athletes_by_Year_NOC["2012"])
    for e in athletes_by_Year_NOC : # NOC = data[i][7]
        for i in range(1,len(data)) :
            if data[i][7] not in athletes_by_Year_NOC[e] and data[i][9] == e:
                athletes_by_Year_NOC[e][data[i][7]] = []
    #print(list(athletes_by_Year_NOC.items()))
    for i in range(1,len(data)) :
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(LtoD_1(data,i))
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year in athletes_by_Year_NOC :
        for noc in athletes_by_Year_NOC[year] :
            g = 0 ; s = 0 ; b = 0
            for e in athletes_by_Year_NOC[year][noc] :
                if e["Medal"] == "Gold" :
                    g += 1
                elif e["Medal"] == "Silver" :
                    s += 1
                elif e["Medal"] == "Bronze" :
                    b += 1
            medals[noc] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    m = [(e,medals[e][0],medals[e][1],medals[e][2]) for e in medals]
    m.sort(key = lambda x : (-x[1],-x[2],-x[3],x[0]))
    for i in range(len(m)) :
        if i < 5 :
            topfive.append(m[i])
        elif i >=5 :
            if m[i-1][1:] == m[i][1:] :
                topfive.append(m[i])
            else: break            
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            if start<= int(year) <= end :
                g = 0 ; s = 0 ; b = 0 
                for e in athletes_by_Year_NOC[year][NOC] :
                    e["Medal"]
                    if e["Medal"] == "Gold" :
                        g += 1
                    elif e["Medal"] == "Silver" :
                        s += 1
                    elif e["Medal"] == "Bronze" :
                        b += 1
                trend.append((year,g,s,b))
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            for e in athletes_by_Year_NOC[year][NOC] :
                if e["Medal"] != "NA" :
                    sports.add(e["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        for NOC in NOCs :
            S_of_Sports = get_sports(athletes_by_Year_NOC, NOC, year)
            sports =sports | S_of_Sports
        for NOC in NOCs :
            S_of_Sports = get_sports(athletes_by_Year_NOC, NOC, year)
            sports = sports & S_of_Sports 
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น
def LtoD_1(data, i) :
    dic = {}
    for n in range(len(data[0])) :
        dic[data[0][n]] = data[i][n]
    return dic

6532161321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1454, 'const': 1449, 'code+const': 2903}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  head = data[0]
  list_convert = []
  for i in range(1, len(data)):# อย่าลืมเปลี่ยน 100 เป็น len(data)
    each_info = data[i]
    dict = {}
    for idx in range(len(head)):
      dict[head[idx]] = each_info[idx]
    list_convert.append(dict)
  for item in list_convert:
    year = item['Year']
    athletes_by_Year_NOC[year] = {}
  for element in list_convert:
    year = element['Year']
    dict_in_year = athletes_by_Year_NOC [year]
    dict_in_year[element['NOC']] = []
  for element in list_convert:
    year = element['Year']
    dict_in_year = athletes_by_Year_NOC[year]
    dict_in_year[element['NOC']] += [element]
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  summary = {}
  nested_dict_year = athletes_by_Year_NOC
  if year in athletes_by_Year_NOC:
    dict_value = nested_dict_year[year] # ในฟังก์ชั่นจะเขียนเปน get_medal(data, year --> สมมติเปน 2002 ต้องแก้)
    for key_noc in dict_value:
      summary[key_noc] = [0, 0, 0] 
    for key_noc in dict_value:
        list_val = dict_value[key_noc]
        for item in list_val:
          medal = item['Medal'] 
          if medal == 'Gold':
            summary[key_noc][0] += 1
          elif medal == 'Silver':
            summary[key_noc][1] += 1
          elif medal == 'Bronze':
            summary[key_noc][2] += 1
    for noc in summary:
      medals[noc] = (summary[noc][0], summary[noc][1], summary[noc][2])
  return medals
# จบข้อสอง
#======================================
def get_top_five(medals):
  topfive = []
  # ข้อที่สาม 
  dict_value = medals 
  if dict_value != {}:
    summary = {}
    for key_noc in dict_value:
      item_medal = dict_value[key_noc]
      summary[key_noc] = [item_medal[0], item_medal[1], item_medal[2]]
    list_top = []
    for noc in list(summary.keys()):
      list_medal_tot = summary[noc]
      list_top.append([-list_medal_tot[0], -list_medal_tot[1], -list_medal_tot[2], noc])
    list_top.sort()
    list_top_2 = [[-e[0], -e[1], -e[2], e[3]] for e in list_top]
    if len(list_top_2) > 5:
      for i in range(5):
        topfive.append((list_top_2[i][3], list_top_2[i][0], list_top_2[i][1], list_top_2[i][2]))
      to_check = topfive[-1]
      for j in range(5, len(list_top_2)):
        if list_top_2[j][0] == to_check[1] and list_top_2[j][1] == to_check[2] and list_top_2[j][2] == to_check[3]:
          topfive.append((list_top_2[j][3], list_top_2[j][0], list_top_2[j][1], list_top_2[j][2]))
    else:
      for i in range(len(list_top_2)):
        topfive.append((list_top_2[i][3], list_top_2[i][0], list_top_2[i][1], list_top_2[i][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start, end+1):
    converted_year = str(year)
    if converted_year in  athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[converted_year]:
      data = get_medals_by_team(athletes_by_Year_NOC, converted_year)
      medal = data[NOC]
      trend.append((converted_year, medal[0], medal[1], medal[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
# get medal   ต้องใช้แน่ๆ 
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    info = athletes_by_Year_NOC[year][NOC]
    summary ={} # --> year 
    for i in range(len(info)):
      dict_data = info[i]
      summary[dict_data['Sport']] = [0,0,0]
    for i in range(len(info)):
      dict_data = info[i]
      sport = dict_data['Sport']
      medal = dict_data['Medal']
      if medal == 'Gold':
        summary[dict_data['Sport']][0] += 1
      elif medal == 'Silver':
        summary[dict_data['Sport']][1] += 1
      elif medal == 'Bronze':
        summary[dict_data['Sport']][2] += 1
    for sport in summary:
      if summary[sport] != [0, 0, 0]:
        sports.add(sport)
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = []
  for noc in NOCs:
    a.append(noc)
  sports_0 = get_sports(athletes_by_Year_NOC, a[0], year)
  sports = sports.union(sports_0)
  for i in range(1, len(a)):
    sports = sports.intersection(get_sports(athletes_by_Year_NOC, a[i], year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532165921: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1106, 'const': 1309, 'code+const': 2415}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  key = ['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games', 'Year', 'Season', 'City', 'Sport', 'Event', 'Medal']
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
      DICT = {}
      for j in range(len(data[0])):
          if j == 9:
              YEAR = data[i][j]
              DICT[data[0][j]] = data[i][j]
          elif j == 7:
              NOC = data[i][j]
              DICT[data[0][j]] = data[i][j]
          else:
              DICT[data[0][j]] = data[i][j]
      if YEAR not in athletes_by_Year_NOC:
          athletes_by_Year_NOC[YEAR] = {NOC:[DICT]}
      else:
          if NOC not in athletes_by_Year_NOC[YEAR]: 
              athletes_by_Year_NOC[YEAR][NOC] = [DICT]
          else:
              athletes_by_Year_NOC[YEAR][NOC].append(DICT)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
      choose = athletes_by_Year_NOC[year]
      for NOC in choose:
          no_medal = [0,0,0]
          for player in choose[NOC]:
              MEDAL = player['Medal']
              if MEDAL == 'Gold':
                  no_medal[0] += 1
              elif MEDAL == 'Silver':
                  no_medal[1] += 1
              elif MEDAL == 'Bronze':
                  no_medal[2] += 1
          medals[NOC] = tuple(no_medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = [[medals[NOC],NOC]for NOC in medals]
  topfive.sort(reverse=True)
  no = 5
  for i in range(5,len(topfive)):
      if topfive[i][0] == topfive[4][0]:
          continue
      else:
          no = i
          break
  topfive = [(e[1],e[0])for e in topfive[:no]]
  initial = topfive[0][1]
  lst = []
  name = []
  for i in range(len(topfive)):
    score = initial
    if topfive[i][1] == initial:
      name.append(topfive[i][0])
    else:
      name.sort()
      for n in name:
        lst.append((n,score[0],score[1],score[2]))
      initial = topfive[i][1]
      name = [topfive[i][0]]
      score = initial
  name.sort()
  for n in name:
    lst.append((n,score[0],score[1],score[2]))
  return lst
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    year = str(year)
    if year in athletes_by_Year_NOC:
      NOC_medal = get_medals_by_team(athletes_by_Year_NOC, year)
      if NOC in NOC_medal:
        score = NOC_medal[NOC]
        trend.append((year,score[0],score[1],score[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    choose = athletes_by_Year_NOC[year]
    if NOC in choose:
      d_choose = choose[NOC]
      for player in d_choose:
          if player['Medal'] in ['Gold','Silver','Bronze']:
              sports.add(player['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  initial = True
  if year in athletes_by_Year_NOC:
    choose = athletes_by_Year_NOC[year]
    for NOC in NOCs:
        if NOC in choose:
           if initial == True:
               sports = get_sports(athletes_by_Year_NOC, NOC, year)
               initial = False
           else:
               sports = sports.intersection(get_sports(athletes_by_Year_NOC, NOC, year))
        else:
          return set()
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532167121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 968, 'const': 1036, 'code+const': 2004}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  head = data[0]
  data = data[1:]
  for x in data :
    if x[9] not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[x[9]] = {}
    if x[7] not in athletes_by_Year_NOC[x[9]] :
      athletes_by_Year_NOC[x[9]][x[7]] = []
    new_data = {}
    for i in range(len(head)) :
      new_data[head[i]] = x[i]
    athletes_by_Year_NOC[x[9]][x[7]].append(new_data)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  for x in athletes_by_Year_NOC[year] :
    Gold = 0
    Silver = 0
    Bronze = 0
    for y in athletes_by_Year_NOC[year][x] :
      if y['Medal'] == "Gold" : Gold += 1
      if y['Medal'] == "Silver" : Silver += 1
      if y['Medal'] == "Bronze" : Bronze += 1
    medals[x] = (Gold, Silver, Bronze)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  for x in medals :
    topfive.append((x, medals[x][0], medals[x][1], medals[x][2]))
  topfive.sort(key = lambda x : (-x[1], -x[2], -x[3], x[0]))
  cut = 5
  if len(topfive) > 5 :
    for i in range(5, len(topfive)) :
      if topfive[i][1] == topfive[i-1][1] and topfive[i][2] == topfive[i-1][2] and topfive[i][3] == topfive[i-1][3] :
        cut += 1
      else : break
  topfive = topfive[:cut]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  Year = {}
  for i in range(start, end+1) :
    if str(i) not in athletes_by_Year_NOC : 
      continue
    data_c = get_medals_by_team(athletes_by_Year_NOC, str(i))
    Year[str(i)] = {}
    if NOC in data_c : 
      Year[str(i)][NOC] = data_c[NOC]
  for x in athletes_by_Year_NOC :
    if start <= int(x) <= end :
      if NOC in Year[str(x)] :
        trend.append((str(x), Year[x][NOC][0], Year[x][NOC][1], Year[x][NOC][2]))
  trend.sort()
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC : 
    return sports
  if NOC not in athletes_by_Year_NOC[year] : 
    return sports
  for x in athletes_by_Year_NOC[year][NOC] :
    if x['Medal'] != "NA" : 
      sports.add(x['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for x in NOCs : 
    sports |= get_sports(athletes_by_Year_NOC, x, year)
    break
  for x in NOCs :
    sports &= get_sports(athletes_by_Year_NOC, x, year)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532172221: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1104, 'const': 1388, 'code+const': 2492}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    for i in range(1,len(data)) :
        year = str(data[i][9])
        athletes_by_Year_NOC[year] = dict()
    for i in range(1,len(data)) :
        year = str(data[i][9])
        noc = data[i][7]
        athletes_by_Year_NOC[year][noc] =list()
    for i in range(1,len(data)) :
        player = {'ID':str(data[i][0]),'Name':data[i][1],'Sex':data[i][2],
                  'Age':str(data[i][3]),'Height':str(data[i][4]),'Weight':data[i][5],
                  'Team':data[i][6],'NOC': data[i][7],'Games':data[i][8],
                  'Year':str(data[i][9]),'Season':str(data[i][10]),'City': data[i][11],
                  'Sport':data[i][12],'Event':data[i][13],'Medal':data[i][14]}
        year = str(data[i][9])
        noc = data[i][7]
        athletes_by_Year_NOC[year][noc].append(player)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    dict_year = athletes_by_Year_NOC[year]
    for k in dict_year.keys() :
        gold = 0
        silver = 0
        bronze = 0
        for e in dict_year[k] :
            if e['Medal'] == 'Gold' :
                gold += 1
            elif e['Medal'] == 'Silver' :
                silver += 1
            elif e['Medal'] == 'Bronze' :
                bronze += 1
        medals[k] = (gold,silver,bronze)    
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    medal = []
    top = []
    for e in medals.keys() :
        x = (-1)*medals[e][0]
        y = (-1)*medals[e][1]
        z = (-1)*medals[e][2]
        medal.append((x,y,z,e))
    medal.sort()
    for e in medal :
        x = (-1)*e[0]
        y = (-1)*e[1]
        z = (-1)*e[2]
        top.append((e[3],x,y,z))
    for i in range(5) :
        topfive.append(top[i])
    for i in range(5,len(top)) :
        if top[4][1:] == top[i][1:] :
            topfive.append(top[i])
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for year in range(start,end+1) :
        if str(year) in athletes_by_Year_NOC.keys() :
            medal_by_team = get_medals_by_team(athletes_by_Year_NOC, str(year))
            if NOC in medal_by_team.keys() :
                trends = medal_by_team[NOC]
                trend.append((str(year),)+ medal_by_team[NOC])
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC.keys():
        if NOC in athletes_by_Year_NOC[year].keys():
            for e in athletes_by_Year_NOC[year][NOC] :
                if e['Medal'] != 'NA' :
                    sports.add(e['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sport = list()
    for e in NOCs :
        sport.append(get_sports(athletes_by_Year_NOC,e,year))
    sports = sport[0]
    i = 1
    while i < len(sport) :
        sports = sport[i].intersection(sports)
        i += 1
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532175121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1390, 'const': 1641, 'code+const': 3031}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  if len(data)>0:
    topic = data[0]
    ny = data[0].index('Year')
    nn = data[0].index('NOC')
    for i in range(1,len(data)):
      dd = {}
      for j in range(len(data[i])):
        dd[topic[j]]=data[i][j]
      if data[i][ny] in athletes_by_Year_NOC :
        if data[i][nn] in athletes_by_Year_NOC[data[i][ny]]:
          athletes_by_Year_NOC[data[i][ny]][data[i][nn]].append(dd)
        else:
          athletes_by_Year_NOC[data[i][ny]][data[i][nn]] = [dd]
      else:
        athletes_by_Year_NOC[data[i][ny]] = {data[i][nn]:[dd]}
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
      for i in athletes_by_Year_NOC[year]:
        medal = [0]*3
        for j in athletes_by_Year_NOC[year][i]:
          if j['Medal']=='Gold':
            medal[0]+=1
          elif j['Medal']=='Silver':
            medal[1]+=1
          elif j['Medal']=='Bronze':
            medal[2]+=1
        medals[i] = tuple(medal)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  all = []
  top = []
  for i in medals:
    a = list(medals[i])
    a.append(i)
    all.append(a)
  for i in all:
    i[0] = -i[0]
    i[1] = -i[1]
    i[2] = -i[2]
  all.sort()
  if len(all)<=5:
    top=[[e[3],-e[0],-e[1],-e[2]] for e in all]
  else:
    for i in range(5):
      top.append(all[i])
    k=5
    while k<len(all):
      if all[4][0]== all[k][0] and all[4][1]==all[k][1] and all[4][2] ==all[k][2]:
        top.append(all[k])
        k+=1
      else:
        break
    top = [[e[3],-e[0],-e[1],-e[2]] for e in top]
  topfive = [tuple(e) for e in top]
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for i in range(start,end+1):
    medal = [0]*3
    if str(i) in athletes_by_Year_NOC:
      medal.insert(0,str(i))
      if NOC in athletes_by_Year_NOC[str(i)]:
        for j in athletes_by_Year_NOC[str(i)][NOC]:
          if j['Medal']=='Gold':
            medal[1] = int(medal[1])+1
          elif j['Medal']=='Silver':
            medal[2] = int(medal[2])+1
          elif j['Medal']=='Bronze':
            medal[3] = int(medal[3])+1 
        trend.append(tuple(medal))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
    if NOC in athletes_by_Year_NOC[year]:
      for i in athletes_by_Year_NOC[year][NOC]:
        if i['Medal']=='NA':
          pass
        else:
          sports.add(i['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = []
  if year in athletes_by_Year_NOC:
    for i in NOCs:
      if i in athletes_by_Year_NOC[year]:
        aa = set()
        for j in athletes_by_Year_NOC[year][i]:
          if j['Medal'] != 'NA':
            aa.add(j['Sport'])
        a.append(aa)
      else:
        return sports
  if len(a)>0:
    sports = a[0]
    k=1
    while k < len(a):
      sports= sports.intersection(a[k])
      k+=1
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532176821: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1214, 'const': 1368, 'code+const': 2582}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  d = {}
  for i in data[1::] :
    if not i[9] in d :
        d[i[9]] = {}
        (d[i[9]])[i[7]] = [{data[0][n]:i[n] for n in range(15) }]
    elif i[9] in d :
        if not i[7] in d[i[9]] :
           (d[i[9]])[i[7]] = [{data[0][n]:i[n] for n in range(15) }]
        elif i[7] in d[i[9]] :
            (d[i[9]])[i[7]].append({data[0][n]:i[n] for n in range(15)})      
  athletes_by_Year_NOC = d
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    for i in athletes_by_Year_NOC[year] :
        g = 0
        s = 0
        b = 0
        for j in athletes_by_Year_NOC[year][i] :
            if j['Medal'] == 'Gold' : g += 1 
            elif j['Medal'] == 'Silver' : s += 1 
            elif j['Medal'] == 'Bronze' : b += 1 
        medals[i] = (g,s,b)
    return medals
#======================================
def get_top_five(medals):
    tf = []
    topfivee = []
    topfive = []
    for i in medals :
        tf.append([-j for j in medals[i]]+[i])
    tf.sort()
    for i in tf :
        topfivee.append(tuple([i[3]]+[-j for j in i[:-1]]))
    topfive = topfivee[:5:]
    for i in topfivee[5::] :
        if i[1::] == topfive[4][1::] :
            topfive.append(i)
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,((round(end/2-0.5))*2)+1) :
        g = 0
        s = 0
        b = 0
        i = str(i)
        if i in athletes_by_Year_NOC :
            if NOC in athletes_by_Year_NOC[i] :
                for j in athletes_by_Year_NOC[i][NOC] :
                    if j['Medal'] == 'Gold' : g += 1 
                    elif j['Medal'] == 'Silver' : s += 1 
                    elif j['Medal'] == 'Bronze' : b += 1 
                trend.append(tuple([i,g,s,b]))
        else :
            continue
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC :
        if NOC in athletes_by_Year_NOC[year] :
            for i in athletes_by_Year_NOC[year][NOC] :
                if i['Medal'] != 'NA' : sports.add(i['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  SET = set()
  NOCs = list(NOCs)
  if year in athletes_by_Year_NOC :
        for n in range(len(NOCs)) :
            if n == 0 :
                if NOCs[n] in athletes_by_Year_NOC[year] :
                    for i in athletes_by_Year_NOC[year][NOCs[n]] :
                        if i['Medal'] != 'NA' : SET.add(i['Sport'])
                        sports = SET
            elif n != 0 :
                SET = set()  
                if NOCs[n] in athletes_by_Year_NOC[year] :
                    for i in athletes_by_Year_NOC[year][NOCs[n]] :
                        if i['Medal'] != 'NA' : SET.add(i['Sport'])
                sports = sports & SET
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532178021: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1210, 'const': 1005, 'code+const': 2215}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    info = []
    out = {}
    for i in range(1,len(data)):
        a = {}
        for j in range(len(data[0])):
            a[data[0][j]] = data[i][j]
        info.append(a)
    out[info[0]["NOC"]] = [info[0]]
    athletes_by_Year_NOC[info[0]["Year"]] = out
    info.remove(info[0])
    for i in info:
        if i["Year"] in athletes_by_Year_NOC.keys() and i["NOC"] in athletes_by_Year_NOC[i["Year"]].keys() :
            athletes_by_Year_NOC[i["Year"]][i["NOC"]].append(i)
        elif i["Year"] in athletes_by_Year_NOC.keys() and i["NOC"] not in athletes_by_Year_NOC[i["Year"]].keys():
            athletes_by_Year_NOC[i["Year"]][i["NOC"]] = list()
            athletes_by_Year_NOC[i["Year"]][i["NOC"]].append(i)
        elif i["Year"] not in athletes_by_Year_NOC.keys():
            athletes_by_Year_NOC[i["Year"]] = dict()
            athletes_by_Year_NOC[i["Year"]][i["NOC"]] = list()
            athletes_by_Year_NOC[i["Year"]][i["NOC"]].append(i)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    info = athletes_by_Year_NOC[year]
    noc = info.keys()
    for i in noc:
        a = info[i]
        medal = [0,0,0]
        for e in a:
            if e['Medal'] == "Gold":
                medal[0] += 1
            elif e['Medal'] == "Silver":
                medal[1] += 1
            elif e['Medal'] == "Bronze":
                medal[2] += 1
            medals[i] = tuple(medal)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    top = []
    out = list()
    for i in medals:
        a = list()
        for e in medals[i]:
            a.append(-e)
        a.append(i)
        out.append(a)
    out.sort()
    for i in out:
        b = list()
        for e in range(3):
            b.append(-i[e])
        b.append(i[3])
        top.append((b))
    c = 0
    for i in top:
        if c < 5 :
            topfive.append(tuple([i[3],i[0],i[1],i[2]]))
            c+=1
        elif c >= 5 and i[0:3] == top[4][0:3]:
            topfive.append(tuple([i[3],i[0],i[1],i[2]]))
            c+=1
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in range(start,end+1):
        if str(i) in athletes_by_Year_NOC.keys():
            x = []
            a = get_medals_by_team(athletes_by_Year_NOC, str(i))
            if NOC in a.keys():
                b = a[NOC]
                x.append(str(i))
                x += list(b)
                trend.append(tuple(x))
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC.keys():
        a = athletes_by_Year_NOC[year]
        if NOC in a.keys():
            b = a[NOC]
            for i in b:
                if i['Medal'] != "NA":
                    sports.add(i["Sport"])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    b = []
    for i in NOCs:
        a = get_sports(athletes_by_Year_NOC, i, year)
        b.append(a)
    sports = sports.union(b[0])
    for e in b:
        sports = e&sports
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532190521: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 894, 'const': 892, 'code+const': 1786}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for a in data[1:]:
    noc=a[7]
    year=a[9]
    new_a={}
    for i in range(15):
      new_a[data[0][i]]=a[i]
    if year not in athletes_by_Year_NOC:
      athletes_by_Year_NOC[year]={noc:[]}
      athletes_by_Year_NOC[year][noc].append(new_a)
    elif noc not in athletes_by_Year_NOC[year]:
      athletes_by_Year_NOC[year][noc]=[]
      athletes_by_Year_NOC[year][noc].append(new_a)
    else:
      athletes_by_Year_NOC[year][noc].append(new_a)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
    for noc in athletes_by_Year_NOC[year]:
      x=0
      y=0
      z=0
      for a in athletes_by_Year_NOC[year][noc]:
        if a['Medal']=='Gold':
          x+=1
        elif a['Medal']=='Silver':
          y+=1
        elif a['Medal']=='Bronze':
          z+=1
      medals[noc]=(x,y,z)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  y=[]
  for m in medals:
    y.append([-medals[m][0],-medals[m][1],-medals[m][2], m])
  y=sorted(y)
  for i in range(5):
    topfive.append((y[i][3],-y[i][0],-y[i][1],-y[i][2]))
  for i in range(5,len(y)):
    if y[i][:3]!=y[i-1][:3]:
      break
    else:
      topfive.append((y[i][3],-y[i][0],-y[i][1],-y[i][2]))
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1):
    if str(year) in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[str(year)]:
      m=get_medals_by_team(athletes_by_Year_NOC,str(year))[NOC]
      trend.append((str(year),m[0],m[1],m[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC and NOC in athletes_by_Year_NOC[year]:
    for a in athletes_by_Year_NOC[year][NOC]:
      if a['Medal']!='NA':
        sports.add(a['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  for noc in NOCs:
    sports=sports.union(get_sports(athletes_by_Year_NOC,noc,year))
  for noc in NOCs:
    sports=sports.intersection(get_sports(athletes_by_Year_NOC,noc,year))
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532191121: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 766, 'const': 1004, 'code+const': 1770}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for a in data[1:] :
    d = {} 
    Year = a[9]
    NOC = a[7]
    for i in range(len(data[0])):
      d[data[0][i]] = a[i]
    if Year not in athletes_by_Year_NOC :
      athletes_by_Year_NOC[Year] = {}
    if NOC not in athletes_by_Year_NOC[Year] :
      athletes_by_Year_NOC[Year][NOC] = []
    athletes_by_Year_NOC[Year][NOC].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year not in athletes_by_Year_NOC:
      return {}
  for NOC in athletes_by_Year_NOC[year]:
      coin = [0,0,0]
      for a in athletes_by_Year_NOC[year][NOC]:
          if a['Medal'] == 'Gold':
              coin[0] +=1
          else:
              if a['Medal'] == 'Silver':
                  coin[1] += 1
              else:
                  if a['Medal'] == 'Bronze':
                      coin[2] += 1
      medals[NOC] = tuple(coin)
  return medals
#======================================
def get_top_five(medals):
  topfive = []
  rank = {}
  for nation in medals :
      llist = medals[nation]
      if llist in rank:
          rank[llist].append(nation)
      else:
          rank[llist] = [nation]
  for ranking in sorted(rank.keys(),reverse=True):
      for nation in sorted(rank[ranking]):
          topfive.append((nation,ranking[0],ranking[1],ranking[2]))
      if len(topfive) >= 5 :break
  return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  for year in range(start,end+1) :
      y = str(year)
      medal = get_medals_by_team(athletes_by_Year_NOC,y)
      if NOC not in medal : pass
      else :
          madals = medal[NOC]
          trend.append((y,madals[0],madals[1],madals[2]))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year not in athletes_by_Year_NOC :
      return sports
  if NOC not in athletes_by_Year_NOC[year] :
      return sports
  for a in athletes_by_Year_NOC[year][NOC]:
      if a['Medal'] == 'NA':
          pass
      else :
          sports.add(a['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = []
  for NOC in NOCs :
      newsports = get_sports(athletes_by_Year_NOC, NOC, year)
      a.append(newsports)
      sports = newsports
  for othersport in a:
      sports = sports.intersection(othersport)
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532196321: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 812, 'const': 784, 'code+const': 1596}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}
    topic = data[0]
    if len(data) == 1: #กันไม่มีข้อมูล
      return athletes_by_Year_NOC
    for e in data[1:]:
        temp_dict = {}
        for i in range(len(e)):
            temp_dict[topic[i]] = e[i]
        if e[9] in athletes_by_Year_NOC.keys():
            if e[7] in athletes_by_Year_NOC[e[9]].keys():
                athletes_by_Year_NOC[e[9]][e[7]].append(temp_dict)
            else:
                new_list = [temp_dict]
                athletes_by_Year_NOC[e[9]][e[7]] = new_list
        else:
            athletes_by_Year_NOC[e[9]] = {}
            new_list = [temp_dict]
            athletes_by_Year_NOC[e[9]][e[7]] = new_list
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC.keys(): #กันไม่มีข้อมูล
      return medals
    key_list = list(athletes_by_Year_NOC[year].keys())
    for e in key_list:
        G = 0
        S = 0
        B = 0
        for q in athletes_by_Year_NOC[year][e]:
            get_medal = q["Medal"]
            if get_medal == "Gold":
                G+=1
            elif get_medal == "Silver":
                S+=1
            elif get_medal == "Bronze":
                B+=1
        score = (G, S, B)
        medals[e] = score
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    reverse_medals = {}
    for k,v in medals.items():
      if v not in reverse_medals:
        reverse_medals[v] = set()
      reverse_medals[v].add(k)
    for e in sorted(reverse_medals)[-1:-6:-1]:
        for q in sorted(reverse_medals[e]):
          t = (q, )+e
          topfive.append(t)
        if len(topfive)>= 5:
          break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for y in range(start,end+1):
      if str(y) in athletes_by_Year_NOC.keys(): #ปีไม่อยู่ก็ข้าม
        medal_dict = get_medals_by_team(athletes_by_Year_NOC,str(y))
        if NOC in medal_dict: #NOCไม่อยู่ก็ข้าม
          t = (str(y), )+medal_dict[NOC]
          trend.append(t)
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    if year in athletes_by_Year_NOC:#กันปีไม่อยู่
        if NOC in athletes_by_Year_NOC[year]:#กันNOCไม่อยู่
            for dic in athletes_by_Year_NOC[year][NOC]:
                if dic["Medal"] == "NA":
                    pass
                else:
                    sports.add(dic['Sport'])
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    NOCs_list = list(NOCs)
    sports = get_sports(athletes_by_Year_NOC,NOCs_list[0],year)
    for e in NOCs_list:
        use = get_sports(athletes_by_Year_NOC,e,year)
        sports = sports.intersection(use)
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532202421: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1278, 'const': 1008, 'code+const': 2286}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
  athletes_by_Year_NOC = {}
  for i in range(1,len(data)):
        if data[i][9] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[data[i][9]] = {}
        if data[i][7] not in athletes_by_Year_NOC[data[i][9]]:
            athletes_by_Year_NOC[data[i][9]][data[i][7]] = []
        d = {}
        for k in range(15):
            d[data[0][k]] = data[i][k]
        athletes_by_Year_NOC[data[i][9]][data[i][7]].append(d)
  return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
  medals = {}
  if year in athletes_by_Year_NOC:
        for e in athletes_by_Year_NOC[year]:
            m = [0,0,0]  
            for k in athletes_by_Year_NOC[year][e]:
                if k['Medal'] == 'Gold':
                    m[0] += 1
                elif k['Medal'] == 'Silver':
                    m[1] += 1
                elif k['Medal'] == 'Bronze':
                    m[2] += 1
            medals[e] = tuple(m)
  return medals
#======================================
def get_top_five(medals):
    topfive = []
    for i in range(len(medals)):
        b = []
        for k,v in medals.items():
            c = []
            for e in v:
                c.append(-e)
            c.append(k)
            b.append(c)
    d = sorted(b)
    g = []
    y = 0
    for i in range(4):
        while y < len(d)-1 and d[y][0:3:] == d[y+1][0:3:] :
            g.append(d[y])
            y += 1          
        g.append(d[y])
        y += 1
        if y >= 4: break
    if len(g) <= 4:
        if d[y][0:3:] == d[y+1][0:3:]:
            while y < len(d)-1 and d[y][0:3:] == d[y+1][0:3:] :
                g.append(d[y])
                y += 1
            g.append(d[y])
        else:
            g.append(d[y])
    for e in g:
        x = [e[-1]]
        for k in e[:3:]:
            x.append(-k)
        topfive.append(tuple(x))
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
  trend = []
  x = []
  for e in athletes_by_Year_NOC:
        if start <= int(e) <= end:
            medals = get_medals_by_team(athletes_by_Year_NOC, str(e))
            if NOC in medals:
                a = [int(e)]+list(medals[NOC])
                x.append(a)
  for e in sorted(x):
        y = [str(e[0])]+e[1::]
        trend.append(tuple(y))
  return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
  sports = set()
  if year in athletes_by_Year_NOC:
        if NOC in athletes_by_Year_NOC[year]:
            for e in athletes_by_Year_NOC[year][NOC]:
                if e['Medal'] != 'NA':
                    sports.add(e['Sport'])
  return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
  sports = set()
  a = []
  for e in NOCs:
        s = get_sports(athletes_by_Year_NOC, e, year)
        a.append(s)
  sports = set(a[0])
  for e in a[1::]:
        sports &= e
  return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น

6532204721: HW5
testfuncscerrstu_stdoutstu_keptstu_fout
convert_to_dict_011.0
[[['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')]]]
convert_to_dict_021.0
[[['2010', 'THA', ('Age', '22'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2010 S'),
   ('Height', '180'), ('ID', '2'), ('Medal', 'Gold'), ('NOC', 'THA'), ('Name', 'C'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'THA'), ('Weight', '64'),
   ('Year', '2010')],
  ['2010', 'USA', ('Age', '29'), ('City', 'BKK'), ('Event', 'T X'), ('Games', '2010 S'),
   ('Height', '172'), ('ID', '1'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'B'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'T'), ('Team', 'USA'), ('Weight', '58'),
   ('Year', '2010')],
  ['2012', 'USA', ('Age', '23'), ('City', 'BKK'), ('Event', 'G A'), ('Games', '2012 S'),
   ('Height', '167'), ('ID', '3'), ('Medal', 'Gold'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '64'),
   ('Year', '2012')],
  ['2012', 'USA', ('Age', '25'), ('City', 'BKK'), ('Event', 'G B'), ('Games', '2013 S'),
   ('Height', '163'), ('ID', '4'), ('Medal', 'Silver'), ('NOC', 'USA'), ('Name', 'A'),
   ('Season', 'Summer'), ('Sex', 'M'), ('Sport', 'G'), ('Team', 'USA'), ('Weight', '60'),
   ('Year', '2012')]]]
get_medals_by_team_011.0
[[('A', (2, 1, 1)), ('B', (2, 0, 2)), ('C', (0, 0, 0))],
 [('A', (1, 3, 1)), ('C', (0, 1, 0)), ('D', (1, 1, 2))]]
get_top_five_011.0
[[('C', 1, 1, 1), ('E', 1, 1, 1), ('A', 1, 1, 0), ('B', 1, 1, 0), ('D', 1, 1, 0)],
 [('B', 1, 1, 1), ('A', 1, 1, 0), ('D', 1, 0, 1), ('F', 1, 0, 0), ('C', 0, 1, 0)],
 [('C', 9, 10, 9), ('E', 9, 10, 8), ('A', 9, 9, 9), ('F', 9, 7, 9), ('B', 9, 2, 1), ('D', 9, 2, 1)],
 [('Q', 3, 3, 3), ('A', 3, 2, 1), ('B', 3, 2, 1), ('F', 3, 2, 1), ('J', 3, 2, 1), ('K', 3, 2, 1),
  ('M', 3, 2, 1), ('N', 3, 2, 1), ('S', 3, 2, 1), ('Z', 3, 2, 1)]]
get_medals_trend_type1.0
[[<class 'list'>, <class 'tuple'>, <class 'str'>]]
get_medals_trend_011.0
[[('2004', 1, 5, 12)], [('2000', 4, 5, 8), ('2004', 5, 6, 7), ('2006', 6, 3, 9), ('2008', 0, 7, 9)],
 [('2002', 3, 7, 7), ('2006', 5, 7, 7), ('2008', 4, 3, 12)]]
get_sports_type1.0
[<class 'set'>]
get_sports_011.0
[['B', 'C', 'D', 'F', 'L', 'N'], ['C', 'G', 'I', 'J'], ['C', 'F', 'G', 'I', 'U']]
get_common_sports_011.0
[[<class 'set'>, 'F'], ['H', 'I']]
get_common_sports_021.0
[[<class 'set'>, 'F'], ['H', 'I']]
bytecount: {'code': 1062, 'const': 1021, 'code+const': 2083}
check_import({'allowable': ['math', 'csv']}) deep: none
def convert_to_dict(data):
    athletes_by_Year_NOC = {}    #{year:{NOC:[{person},{person},{person}]}}
    ls_person = []
    for i in range(1,len(data)):
        person = {}
        for j in range(0,15):
            person[data[0][j]] = data[i][j]
        ls_person.append(person)
    for pati_ls in ls_person:
        if pati_ls["Year"] not in athletes_by_Year_NOC:
            athletes_by_Year_NOC[pati_ls["Year"]] = {}
        if pati_ls["NOC"] not in athletes_by_Year_NOC[pati_ls["Year"]]:
            athletes_by_Year_NOC[pati_ls["Year"]][pati_ls["NOC"]] = []
        athletes_by_Year_NOC[pati_ls["Year"]][pati_ls["NOC"]].append(pati_ls)
    return athletes_by_Year_NOC
#======================================
def get_medals_by_team(athletes_by_Year_NOC, year):
    medals = {}
    if year not in athletes_by_Year_NOC:return medals
    for i in athletes_by_Year_NOC[year]:# {NOC}
        N_mdals = [0]*3
        for j in range(len(athletes_by_Year_NOC[year][i])):
            if athletes_by_Year_NOC[year][i][j]["Medal"] == "Gold":
                N_mdals[0] += 1
            elif athletes_by_Year_NOC[year][i][j]["Medal"] == "Silver":
                N_mdals[1] += 1
            elif athletes_by_Year_NOC[year][i][j]["Medal"] == "Bronze":
                N_mdals[2] += 1
        medals[i] = tuple(N_mdals)
    return medals
#======================================
def get_top_five(medals):
    topfive = []
    ls_medals = []
    for i in medals:
        ls_medals.append((-medals[i][0],-medals[i][1],-medals[i][2],i))
    ls_medals.sort()
    for i in range(len(ls_medals)):
        rank_i = (ls_medals[i][3],-ls_medals[i][0],-ls_medals[i][1],-ls_medals[i][2])
        topfive.append(rank_i)
        if i == 4:
            step_1 = (ls_medals[i][:3]) #ls_medals[i][:3]
            for j in range(i+1,len(ls_medals)): 
                step_2 = (ls_medals[j][:3])
                if step_1 != step_2:break
                elif step_1 == step_2:
                    rank_j = (ls_medals[j][3],-ls_medals[j][0],-ls_medals[j][1],-ls_medals[j][2])
                    topfive.append(rank_j)
            break
    return topfive
#======================================
def get_medals_trend(athletes_by_Year_NOC, NOC, start, end):
    trend = []
    for i in athletes_by_Year_NOC:
        if int(i) >= start and int(i) <= end:
            if NOC not in athletes_by_Year_NOC[i]:continue
            y = get_medals_by_team(athletes_by_Year_NOC, i)
            tu = (i,y[NOC][0],y[NOC][1],y[NOC][2])
            trend.append(tu)
    trend.sort()
    return trend
#======================================
def get_sports(athletes_by_Year_NOC, NOC, year):
    sports = set()
    for j in athletes_by_Year_NOC:
        if year != j or NOC not in athletes_by_Year_NOC[j]:continue
        for i in range(len(athletes_by_Year_NOC[year][NOC])):
            sport_type = athletes_by_Year_NOC[year][NOC][i]["Sport"]
            if athletes_by_Year_NOC[year][NOC][i]["Medal"] != "NA":sports.add(sport_type)
    return sports
#======================================
def get_common_sports(athletes_by_Year_NOC, NOCs, year):
    sports = set()
    sports = get_sports(athletes_by_Year_NOC,list(NOCs)[0], year)
    for i in NOCs:
        sports = sports.intersection(get_sports(athletes_by_Year_NOC,i, year))
    return sports
#======================================
# สามารถเขียนฟังก์ชันที่สร้างเองได้ในบริเวณด้านล่างของ cell นี้ เท่านั้น