将元组转换为整数

2024-05-15 12:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python函数,它接受两个参数(string,dictionary)并返回一个float。这个函数的目的是取分数和字符串数组中整数的平均值。

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

我有一个有效的测试用例:

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

我还有一个带有元组的测试用例:

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

如何更改代码,以便将任何给定元组转换为整数,以便仍能运行程序?


Tags: key函数目的参数stringdictionary测试用例整数
3条回答

我假设你希望这个问题的答案是(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)]

然后使用map对每个元组应用sum。

假设您将文件读入名为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)

试着用我的忍者读心术来猜测你想如何将元组转换成浮点数,也许你想:

def tup2float(tup):
    return float('.'.join(str(x) for x in tup))

这只适用于2元组。。。

一些结果:

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

相关问题 更多 >