2016-10-04 4 views
0

아래 코드에서 'anos'목록은 사용자가 정의해야하며 임의의 년이 걸릴 수 있습니다.파이썬의 for 루프에 변수를 동적으로 할당하십시오.

그러나 'anos'목록에서 매년 FOR 루프 시작 부분에 새 변수를 할당해야합니다. anos = [ '2008', '2009]이면 for 루프는 for [a, b] ..이고 data + =는 a와 b 만 사용합니다.

'anos'목록이있는 항목의 수에 따라 동적으로 변수를 할당 할 수 있습니까? FOR 함수가 그것을 받아들이 나 itertools에 다른 도구를 사용해야합니까?

def gv(var): 
dd, aa, bb, cc, anos = {}, [], {}, {}, ['2006','2007','2008','2009','2010','2011','2012','2013','2014','2015'] 

for i in anos: 
    resp = requests.get('http://www.sidra.ibge.gov.br/api/values/t/1612/n3/all/v/'+var+'/p/' + i + '/C81/2713/f/c') 
    dd[i] = json.loads(resp.text.encode('utf8')) 

anos_tuple = tuple((dd[i]) for i in anos) #ie: (dd['2006], dd['2007']...) 

for [a,b,c,d,e,f,g,h,i,j] in zip(*anos_tuple): # uma letra para cada ano 
    data = a['D1C'] 
    data += ','.join([a['V'], b['V'], c['V'], d['V'], e['V'], 
         f['V'], g['V'], h['V'], i['V'], j['V']]) 
+0

로 루프에 대한 마지막 번역 (* anos_tuple)'row'가리스트입니다'. 'row [0]'은 a,'row [1]'은 b 등등 ... – algrebe

답변

1

ANOS는 = '2008', '2009] 다음 for 루프가 될 경우에 대해 [A, B] ... 데이터 + = 판매용 A 및 B

을 사용

그래서 [a, b] 목록은 3 년이 될 때 [a, b, c]가 될 수 있습니다.

이 경우, 당신은 우편에 행에 대해 '할 수

for row in zip(*anos_tuple): 
    # a is row[0] 
    data = row[0]['D1C'] 

    # a['V'], b['V'] etc is row[0]['V'], row[1]['V'] 
    data += ','.join([ i['V'] for i in row ]) 
+0

감사합니다. 그것은 작동합니다! 나는 이미 너무 많은 시간을 보냈다. 감사! – relima