我有分裂错误的问题..我使用两个字典,我必须将它们除以其他字典..但有些值为0 ..我不想要错误但我想要
我的两个词:
probspam:
{0: [3.75199226626618e-79], 1: [1.0384638247478166e-25], 2: [3.876104531640006e-157]}
probham:
{0: [1.0143598477460146e-78], 1: [0.0], 2: [2.2740883119510355e-138]}
错误的功能:
def bayes (probspam, probham):
try:
lista={k: [probspam[k][0]/probham[k][0]] for k in probham}
except ZeroDivisionError:
k=0
return lista
我怎么能告诉我的系统当probham[k]=0
时,它应该为除法的结果赋值0并且不给我:“ZeroDivisionError:float division by zero”?
答案 0 :(得分:0)
你在找什么?
doc.fancy_field.value
或者,如果您需要0.0而不是[0.0]作为值
{
"query": {
"function_score": {
"query": {
"function_score": {
"query": {"match_all": {}},
"functions": [
{
//Some decay function --> f1
},
{
//Some decay function --> f2
},
{
//Some field_value_factor --> f3
}
],
"score_mode": "sum",
"boost_mode": "replace"
}
},
"functions": [
{
"script_score": {
"script": {
"inline": "_score * doc['fancy_field'].value"
}
}
}
],
"score_mode": "multiply",
"boost_mode": "replace"
}
}
}
List / dict理解力很强大! :)
答案 1 :(得分:0)
试试这个:
def bayes(probspam, probham):
lista = {}
for k in probham:
if probham[k][0] != 0:
lista[k] = [probspam[k][0]/probham[k][0]]
else:
lista[k] = [0.0]
return lista