2014-11-20 4 views
0

한 줄씩 파일을 구문 분석 할 때 문자열 목록을 생성합니다. 그 문자열 중 하나는 숫자입니다. 그래서 부동 소수점 형으로 타입 변환하고 싶습니다.dicts의 dict 내에서의 형변환

그래서

["PRO", "CCC", "4629.00"] 

내 파서 라인으로 파일 라인을 읽고

["PRO", "CCC", 4629.00] 

일해야하지만 나는 위의 목록의 [2] 항목으로와 dicts 내 DICT를 작성하려고 할 때 다음과 같은 플로트 :

fh = open("textfile_w_header","r") 
def codon_preference_table_with_AA(fh): 
    header = fh.readline() 
    for line in fh: 
     row = line.split() 
     row[2] = float(row[2]) 
     myDict = {row[0]:{row[1]:row[2]}} 
     print(myDict) 

나는 값 오류 :

,536,
ValueError: Mixing iteration and read methods would lose data 

사전을 만든 후이 가장 안쪽 값을 부동 소수점으로 변환 할 수있는 또 다른 방법이 있습니까?

+0

에 채택 ('fh' 라인과'작성한 Readline()'에 대한). 대신'next (fh)'를 사용하여 헤더 행을 건너 뜁니다. –

+0

'fh.readline() 대신'next (fh)'를 사용하십시오 –

+0

이 부분에 대해서는 명확하지 않았습니다. 텍스트 파일의 헤더는 사전을 만들지 않으려 고합니다. 그래서 readline을 사용합니다. 그 첫 번째 헤더 라인을 건너 뛰고 나머지를 반복하여 사전을 만듭니다. 그 일을하는 더 좋은 방법이 있습니까? –

답변

0

코드를 따르지 않는 이유는 무엇입니까?

line = "PRO CCC 4629.00" 
row = line.split() 
f = float(row[2]) 
myDict = {row[0]:{row[1]:f}} 
print(myDict) 

출력합니다.

{'PRO': {'CCC': 4629.0}} 

가 반복을 혼합하지 마십시오 코드

fh = open("textfile_w_header","r") 
def codon_preference_table_with_AA(fh): 
    header = fh.readline() 
    for line in fh: 
     row = line.split() 
     f = float(row[2]) 
     myDict = {row[0]:{row[1]:f}} 
     print(myDict) 
+0

감사합니다, 아틸라. 귀하의 솔루션은 제 요구 사항에 완벽하게 부합했습니다. –