我需要检查来自不同表的一系列属性。总共大约有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/