【问题标题】:Divide two dictionaries of float values with zero values将两个浮点值字典除以零值
【发布时间】:2016-11-14 14:03:43
【问题描述】:

我遇到了除法错误的问题..我使用了两个字典,我必须将它们除以其他字典..但是有些值是 0..我不想要错误但我想要

我的两个字典:

问题垃圾邮件:

  {0: [3.75199226626618e-79], 1: [1.0384638247478166e-25], 2: [3.876104531640006e-157]}

问题:

 {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 除以零”?

【问题讨论】:

  • lista={k: [probspam[k][0]/probham[k][0] if probham[k][0] != 0 else 0.0] for k in probham}跨度>

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


【解决方案1】:

它是你要找的吗?

def bayes (probspam, probham):
    lista={k: [probspam[k][0]/probham[k][0] if probham[k][0] !=0 else .0] for k in probham}
    return lista

或者,如果您需要 0.0 而不是 [0.0] 作为值

def bayes (probspam, probham):
    lista={k: [probspam[k][0]/probham[k][0]] if probham[k][0] !=0 else .0 for k in probham}
    return lista

列表/字典推导很强大! :)

【讨论】:

    【解决方案2】:

    试试这个:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 2014-07-06
      • 1970-01-01
      相关资源
      最近更新 更多