2013-04-02 4 views
0

참고로 Python 2.4를 사용합니다. 다음은 d_ourbook이라는 사전입니다.사전의 부동 소수점 값을 두 자릿수 소수점으로 변환합니다.

{'130405C00465000': [[8.6999999999999993, 8.9000000000000004, 0.50749999999999995, 32.810000000000002, -141.1575]]} 

값은 부동 소수점의 목록입니다. 동일한 사전을 표시하지만 두 개의 부동 소수점으로 제한된 값을 갖는 함수를 만들려고합니다.

나는 부동 소수점 만든 - 두 (floatnum)라고> 2decimal 문자열 기능 :

def two(floatnum): 
    return '%.2f' %(floatnum) 

내 기능 루프 또는 사전을 통해 압축하여왔다 두 (값)에 모든 값을 변환 악몽과 반환 float 인수가 필요합니다.

Traceback (most recent call last): 
    File "esecombo.py", line 496, in ? 
    print ' -- dt: ', dt(d_ourbook) 
    File "esecombo.py", line 23, in dt 
    new_d_name = dict(zip(d_name.keys(), [two(value)for value in d_name.values()])) 
    File "esecombo.py", line 10, in two 
    return '%.2f' %(floatnum) 
TypeError: float argument required 

도움이 필요합니다.

답변

0

d_name이 제공된 사전이라고 가정하면 d_name.values()은 수레 목록 목록입니다. 따라서 값은 부동 소수점 목록 목록이므로 오류없이 two()으로 넘길 수는 없습니다.

해결 된 경우에도 zip은 가장 짧은 인수에서 여러 튜플 기반을 반환합니다. 그래서 :

을 : {'130405C00465000': '8.70'}

에서

new_d_name = dict(zip(d_name.keys(), 
         [two(value) for value in (d_name.values()[0][0])])) 

결과이 모든 값이이 경우에 당신은 아마 사용할 수 있습니다, 예에서와 같이 목록 유형의 단일 항목 목록의 것으로 가정

new_d_name = dict(zip(d_name.keys(), 
         [[two(value) for value in (d_name.values()[0][0])]])) 

는 얻을 :

{'130405C00465000': ['8.70', '8.90', '0.51', '32.81', '-141.16']}