将分数和权重分配给线段

将分数和权重分配给线段

我需要检查来自不同表的一系列属性。总共大约有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][0] for item in lst]
weight = [item[0][1] for item in lst]
scoresum = (listsum(score))
weightsum = (listsum(weight))

total = scoresum/weightsum


有人知道更好的达成方式吗?我不知道,但是似乎必须有一个更好的方法

最佳答案

如果您坚持对元组求和,则可以使用以下技巧(取自this answer)简化该操作:

# Option 1
[sum(x) for x in zip(*lst)]

# Option 2
map(sum, zip(*l))


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

但是,您将需要一个简单的元组列表,所以您可能需要进行更改。该列表应类似于以下内容:

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

关于python - 将分数和权重分配给线段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54282798/

10-12 23:30