2014-06-20 3 views
1

하나의 CSV에서 2 개의 사전을 작성하거나 입력을 위해 3 개의 행이있는 사전을 작성하고 분실시에 다음과 같은 여러 가지 방법을 시도했습니다.CSV에서 2 개의 사전 작성 또는 3 행에서 사전 작성하기

import csv 
vlan = open('vlan_dev.csv', 'rU') 
readvlan = csv.reader(vlan) 
lookup = open('lookup_table_dev.csv', 'rU') 
readlookup = csv.reader(lookup) 
assignment = open('assignment_dev.csv', 'rU') 
readassignment = csv.reader(assignment) 
outfile = open('testout.csv', 'w') 
writer = csv.writer(outfile,) 
used_header = False 
for rows in readlookup: 
    #creating dictionary for lookup table 
    lookup_dict = {rows[0]:rows[4] for rows in readlookup} 
    #print lookup_dict 
    for rows in readassignment: 
     #creating dictionary for building assignment to department 
     assignment_dict = {rows[0]:rows[3]:rows[4] for rows in readassignment} 

import csv 
vlan = open('vlan_dev.csv', 'rU') 
readvlan = csv.reader(vlan) 
lookup = open('lookup_table_dev.csv', 'rU') 
readlookup = csv.reader(lookup) 
assignment = open('assignment_dev.csv', 'rU') 
readassignment = csv.reader(assignment) 
outfile = open('testout.csv', 'w') 
writer = csv.writer(outfile,) 
used_header = False 
for rows in readlookup: 
    #creating dictionary for lookup table 
    lookup_dict = {rows[0]:rows[4] for rows in readlookup} 
    #print lookup_dict 
    for rows in readassignment: 
     #creating dictionary for building assignment to department 
     assignment_dict = {rows[0]:rows[3] for rows in readassignment} 
     #creating dictionary for floor assignment to department 
     department_dict = {rows[1]:rows[4] for rows in readassignment} 

이 할 수있는 더 좋은 방법은 무엇입니까?

+0

제 3의 dict에 대해 별도의 함수를 만들려고했지만 빈을 반환합니다. – Waitkus

+1

질문 : "내 지역 식료품 점에 가서 두 개의 다른 통로를 방문하지 않고 4 가지 종류의 과일을 얻으려고합니다. 왼쪽, 오른쪽, 오른쪽, 왼쪽, 오른쪽, 지금까지 찍은 일련의 회전입니다. 더 좋은 방법이 있습니까? " 우리가 어떻게 알아야 하죠? CSV 파일에는 무엇이 있습니까? 왜 당신은 결과물을 얻으려고합니까? 그 이유는 무엇입니까? –

+0

첫 번째 CSV (vlan)에는 건물의 층에 대한 IP 주소 할당이 포함되고 두 번째 CSV (lookup_table)에는 건물 이름과 건물 코드가 포함되며 세 번째 csv (할당)에는 건물 코드, 층 및 점유자가 포함됩니다. 거주자를 건물 및 층에 할당하기 위해 사전에 데이터를 가져 오려고합니다. 첫 번째 CSV에서 가져온 데이터가 최종 CSV로 가져옵니다. 두 번째 및 세 번째를 사용하여 건물 바닥에 거주자에게 할당하려고합니다. – Waitkus

답변

1

다음 함수를 사용하여 3 개의 인수를 사용하여 사전을 만듭니다.

import csv 
foo_in = open('bar.csv', 'rU') 
readfoo = csv.reader(foo_in) 

for row in readfoo: 
    spam = row[0] 
    eggs = row[1] 
    foobar = row[2] 
    new_data = dict() 
    new_data.setdefault(spam, {}) 
    new_data[spam].setdefault(eggs, []).append(foobar) 
    print new_data 

이렇게하면 3 가지 항목을 사용하는 사전을 얻을 수 있습니다.

+0

코드가 포함 된 답변을 게시하면 [올바른 형식 지정] (http://stackoverflow.com/help/formatting)이 도움이되므로 구문 강조와 적절한 들여 쓰기가 표시됩니다. – skrrgwasme