我正在执行以下脚本:
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'
我不明白为什么它说我在脚本中没有任何dict变量之间的dict和dict之间有一些操作数。
dict
是变量的类型,而不是变量本身。错误是什么意思是您试图从另一个dict中提取一个dict:
suma2 = sum([pow(dic1[elem]-dic2[elem],2)
您应该从dic1
和dic2
内的字典中获取一个值,请使用:
dic1[elem][something_else]
dic2[elem][something_else]
其他可能是:
- 如果Elem是1:2,3,5,6,7
- 如果Elem是2:1,2,3,5,8
- 如果Elem是3:1,2,4,8
- 如果Elem是4:1,3,6,8
至少根据内部dict
s。