如何用python完成评分功能呢_如何在python中创建一个高效快速的评分系统?

作为python项目的一部分,我需要开发一个快速有效的符号系统来评估对象。简单解释一下,我有几个评级标准,我称之为A,B,C,C,D ...每个标准的得分均为10分。

我必须评估一个字典,该字典的关键是符号(A,B,C,D ......)的标准,以及值,要注意的值。

问题是:要评估的数据可以是几种类型:int / float / date。

得分10可以分配到最高值(例如销售的商品数量)或在某些情况下最低(订单取消数量)

每个评分标准都必须加权

算法必须经过优化,并且能够快速实时记录物体

所以我开始使用JSON将评分标准与评估者方法分组。

我的json文件:{

"A": {

"weighting": 2,

"graduation": {

"10": ["lesser_than_or_equal", 0],

"9": ["lesser_than_or_equal", 1],

"8": ["lesser_than_or_equal", 2],

"7": ["lesser_than_or_equal", 3],

"6": ["lesser_than_or_equal", 4],

"5": ["lesser_than_or_equal", 5],

"4": ["lesser_than_or_equal", 6],

"3": ["lesser_than_or_equal", 7],

"2": ["lesser_than_or_equal", 9],

"1": ["great_than", 10]

}

},

"B": {

"weighting": 3,

"graduation": {

"10": ["greater_than_or_equal", 10000000],

"9": ["greater_than_or_equal", 1000000],

"8": ["greater_than_or_equal", 100000],

"7": ["greater_than_or_equal", 10000],

"6": ["greater_than_or_equal", 1000],

"5": ["greater_than_or_equal", 100],

"4": ["greater_than_or_equal", 50],

"3": ["greater_than_or_equal", 30],

"2": ["greater_than_or_equal", 20],

"1": ["less_than", 20]

}

},

这是我的代码:class Notation(object):

def assign_notation(self, score, criterion='A'):

try:

grade = self.get_grade_for_criterion(self.fetchScoringSystem('scoringSystem.json'), criterion)

except Exception as exc:

logger.error('Impossible to retrieve the criteria scale '+criterion+' : ' + exc)

else:

grades = grade['graduation']

for key in sorted(grades, key=int, reverse=True):

evaluator, param = grades[key]

if self.__getattribute__(evaluator)(score, param):

return (int(key) * int(grade['weighting']))

else:

raise AttributeError

logger.error('Unable to access the function '+evaluator+' with the parameters '+ score + param)

def fetchGradingScale(self, infile):

import json

from collections import OrderedDict

with open(infile, 'r') as f:

data = json.load(f, object_pairs_hook=OrderedDict)

logger.info("Read file %s", infile)

return data

def greater_than_or_equal(self, score, x):

try:

return score >= x

except ValueError as exc:

logger.error('Error in values :' + exc)

def lesser_than_or_equal(self, score, x):

try:

return score <= x

except ValueError as exc:

logger.error('Error in values :' + exc)

目前,python返回以下错误:TypeError:'int'对象不可迭代

但是,我认为我的assign_notation方法效率不高,朋友告诉我有关bissect的优化算法。您是否已经构建了复杂的符号系统,如果没有,您是否有任何想法可以帮助我构建它?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值