开发者社区> 问答> 正文

将分数和权重分配给线段

我有一些来自不同表的属性,我需要检查。总共大约有40个项目,比如

origin, age, amount, etc
我还没有找到收集数据的最佳方法,也许从不同的来源拉取数据并创建一个字典

我为每个测试创建了一个函数。

def age(value):

if value < 3:
    Score = 1
elif 3 <= value < 5:
    Score = 7
elif value >= 5:
    Score = 10
else:
    Score = 10
Weight = 5
return (Score, Weight)

def origin(value):

if value.upper() == "USA":
    Score = 1
elif value.upper() == "JAPAN":
    Score = 1
elif value.upper() == "CHINA":
    Score = 10
elif value.upper() == "OTHER":
    Score = 7
else:
    Score = 10
Weight = 1
return (Score, Weight)

我取值并附加到列表中

[[(7, 1)], [(1, 1)]]...
然后

## calling all 40 functions doesnt seem efficient
lst.append([age(4)])
lst.append([origin("JAPAN")])

score = item[0 for item in lst]
weight = item[0 for item in lst]
scoresum = (listsum(score))
weightsum = (listsum(weight))

total = scoresum/weightsum
有谁知道更好的方法来完成?

展开
收起
一码平川MACHEL 2019-01-22 10:39:50 1710 0
1 条回答
写回答
取消 提交回答
  • 如果你坚持总结元组,你可以通过使用这个技巧简化该操作:

    Option 1

    [sum(x) for x in zip(*lst)]

    Option 2

    map(sum, zip(*l))
    这将产生一个总和列表(例如[25, 32]),然后您可以使用它来计算总和。

    但是,您需要有一个扁平的元组列表,这是您可能想要进行的更改。该列表应如下所示:

    [(2, 1), (1, 1), ...]

    2019-07-17 23:26:09
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载