将两个浮点值字典除以零值

时间:2016-11-14 14:03:44

标签: python dictionary floating-point division divide-by-zero

我有分裂错误的问题..我使用两个字典,我必须将它们除以其他字典..但有些值为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”?

2 个答案:

答案 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