2012-10-19 3 views
2

2 개의 인수 (문자열, 사전)를 사용하는이 파이썬 함수가 있으며 float를 반환합니다. 함수는 점수 및 문자열의 dionionary 내에서 정수의 평균을 취하도록 설계되었습니다. 내가 어떤 변환 할 수 있도록 어떻게 코드를 변경 할 수 있습니다튜플을 정수로 변환합니다.

print happiness_score("a b" , {"a":(1,2) , "b":(3,4)}) 

:

print happiness_score("a b" , {"a":(1.2) , "b":(3.4)}) 
>>> 2.3 

가 나는 또한 튜플과 테스트 케이스가 있습니다

def happiness_score(string, dic): 
    keys = string.lower().split() 
    v = sum(dic[key] for key in keys) 
    return float(v)/len(keys) 

나는 작동이 테스트 케이스를 주어진 튜플을 정수로 두어 여전히 프로그램을 실행할 수 있습니까?

+2

튜플을 정수로 변환하면 무엇을 의미합니까? 터플의 구성 요소를 합한 것입니까? 터플을 float (1.2가 1.2가되어야 함)로 변환한다는 것을 실제로 의미합니까? – acjay

+0

정확히 어떻게 튜플 (값의 모음)을 정수 (정확히 하나의 값)로 변환 하시겠습니까? – dcsordas

답변

1

은 아마 당신이 원하는 :

이 만 2 튜플와 함께 작동합니다
def tup2float(tup): 
    return float('.'.join(str(x) for x in tup)) 

...

어떤 결과 :

>>> tup2float((1,2)) 
1.2 
>>> tup2float((2,3)) 
2.3 
>>> tup2float((2,30)) 
2.3 
>>> tup2float((2,32)) 
2.32 
+0

하지만 0이 있다면? 'tup2float ((1, 064))'는'1.064'와 비슷한 것을 만들어 내지 않습니다 :) – nneonneo

+0

@nneonneo - 당신 말이 맞아요. 그러나 이것이 OP 코드의 설계 결함 (OP가 실제로 원하는 것이라면)이라고 말할 수 있습니다. 정보가 단순히 거기에 없기 때문에 언급 한 사례를 처리 할 수있는 변환기를 작성할 수 없습니다. – mgilson

0

이 경우 대답을 (2, 3)으로하고 싶다고 가정합니다. 즉, 튜플의 각 요소를 별도의 평균값의 소스로 처리하려고합니다.

def happiness_score(dic): 
    scores = map(sum, zip(*d.values())) 
    return [float(v)/len(dic) for v in scores] 

첫 번째 단계는 각 튜플 요소에 대한 값들의 세트를 생성하는 것이다 :

d = {'a': (1, 2), 'b': (3, 4)} 
zip(*d.values()) 
[(1, 3), (2, 4)] 

이어서지도를 이용하여 각 조의 합계를 적용한다. 당신이 float로 튜플을 변환하는 방법을 추측 내 닌자 마음 읽기 능력을 사용하려고

0

당신이 전화 목록에 파일을 읽을 가정 lines

hrs, miles = zip(*[(float(line.split()[-4]), float(line.split()[-2])) for line in lines if 'miles' and 'hrs' in line]) 
total_hrs = sum(hrs) 
total_miles = sum(miles) 
관련 문제