【发布时间】:2017-05-20 10:44:53
【问题描述】:
我对 Python 很陌生,我正在努力解决这个错误,这是我的代码:
new_dictionary = dict(((i,f), abs(int(-d/-(-first_dictionary[i, f]//second_dictionary[i, f])))) for i in I for f in F)
我得到回报:ZeroDivisionError: float division by zero
我知道出现这个错误是因为first_dictionary和second_dictionary的某些值等于0.0,但我不知道如何管理它。
我试图定义这个函数:
def my_function(dict1, dict2):
first_dictionary = dict1
second_dictionary = dict2
for i in I:
for f in F:
if first_dictionary[i, f] == 0 or second_dictionary[i, f] == 0.0:
new_value = 0
else:
new_value = abs(int(-d/-(-first_dictionary[i, f]//second_dictionary[i, f])))
return new_value
new_dictionary = dict(((i, f), my_function(first_dictionary, second_dictionary)) for i in I for f in F)
但输出与我的预期不同,它为字典中的所有键提供了相同的值。
如何解决此错误?提前致谢!
【问题讨论】:
-
你能分享你的字典值吗?这个问题会变得更清楚..
-
您是否想始终在循环中覆盖“new_value”?那为什么还要麻烦 for 循环呢?
标签: python python-2.7