-3
我执行下面的脚本:对不存在的变量不支持的操作?
dic1 = {
1:{2:3,3:1,5:4,6:3,7:5},
2:{1:4,2:1,3:3,5:5,8:2},
3:{1:2,2:1,4:5,8:1},
4:{1:3,3:2,6:5,8:4}
}
dic2 = {
1:{2:3,3:1,5:4,6:3,7:5},
2:{1:4,2:1,3:3,5:5,8:2},
3:{1:2,2:1,4:5,8:1},
4:{1:3,3:2,6:5,8:4}
}
from math import sqrt
def distEuclidea(dic1, dic2):
suma2 = sum([pow(dic1[elem]-dic2[elem],2)
for elem in dic1 if elem in dic2])
return sqrt(suma2)
def similEuclidea(dic1, dic2):
return 1/(1+distEuclidea(dic1, dic2))
print (similEuclidea(dic1,dic2))
我得到
Traceback (most recent call last):
File "aplicacion_distancia_euclidea.py", line 28, in <module>
print (similEuclidea(dic1,dic2))
File "aplicacion_distancia_euclidea.py", line 25, in similEuclidea
return 1/(1+distEuclidea(dic1, dic2))
File "aplicacion_distancia_euclidea.py", line 21, in distEuclidea
for elem in dic1 if elem in dic2])
File "aplicacion_distancia_euclidea.py", line 21, in <listcomp>
for elem in dic1 if elem in dic2])
TypeError: unsupported operand type(s) for -: 'dict' and 'dict'
我不明白为什么它说,我有字典和词典之间的一些操作的时候,我没有任何字典的错误在我的脚本中变量。
你认为'{2:3,3:1,5:4,6:3,7:5}是什么?字典... –
你只有8个左右。你有什么期望'dic1 [elem] -dic2 [elem]'呢? – njzk2
错误信息中的''dict''不是指变量名,它指的是变量的* type *,因此错误信息“** TypeError **:不受支持的操作数**类型**的 - :'字典'和'字典'“。另外,在这种情况下的“操作数”是指负号('-')。它是说你不能从另一个字典中减去一个字典。换句话说,Python不能执行'{2:3,3:1,5:4,6:3,7:5} - {2:3,3:1,5:4,6:3,7 :5}'.' –