Python 词典理解中的异常处理

Python 词典理解中的异常处理,python,python-3.x,dictionary,dictionary-comprehension,Python,Python 3.x,Dictionary,Dictionary Comprehension,我有两本字典: length = {1: 3, 2: 9, 3: 1, 4: 1, 5: 0, 6: 0, 7: 5, 8: 0} result = {1: 3.0, 2: 3.7416573867739413, 3: 7.874007874011811, 4: 6.4031242374328485, 5: 4.0, 6: 0.0, 7: 5.0, 8: 1.0} 当键匹配时,我需要将结果值除以长度值。例如: Key = 1: 3.0 / 3 Key = 2: 3.7416573867739

我有两本字典:

length = {1: 3, 2: 9, 3: 1, 4: 1, 5: 0, 6: 0, 7: 5, 8: 0}

result = {1: 3.0, 2: 3.7416573867739413, 3: 7.874007874011811, 4: 6.4031242374328485, 5: 4.0, 6: 0.0, 7: 5.0, 8: 1.0}
当键匹配时,我需要将结果值除以长度值。例如:

Key = 1: 3.0 / 3
Key = 2: 3.7416573867739413 / 9
etc
对于结果中的所有键。我已尝试使用以下词典:

sims = {k:lengths[k] / v for k, v in result.items()}
但是我得到了一个关于
ZeroDivisionError:float除以零的错误

然后,我试图用难看的代码避免理解,并使用:

for dot_key, dot_val in result.items():
    for length_key, length_val in lengths.items():
        if dot_key == length_key:
            try:
                currVal = float(dot_val / length_val)
            except ZeroDivisionError:
                currVal = 0
            cosine_sims = {dot_key:currVal}

print(cosine_sims)
但我只得到
Key=8的结果

{8: 0.0}
这些SO帖子表明你不能在理解中使用
Try…Catch
,那么我如何通过在两个不同的dict中用相同的键将一个值除以另一个值来达到预期的结果呢


最后一行,您正在覆盖字典。而是使用以下语法将其追加到字典中

代替

cosine_sims = {dot_key:currVal}
使用


如果符合以下条件,则可以使用内联
测试
0


长度[k]/v如果v!=0其他0
直接在理解中

只需更改最后一行cosine_sims[dot_key]=currVal
最后一行
您能在示例中显示吗?与我下面的答案相比,这是一个解决方案,此答案解决了问题。这应该是公认的答案。
cosine_sims[dot_key]=currVal