2015-04-17 134 views
0

如果我有一個整數並將它乘以一個容器(元組)中的每個整數並將它們加在一起 ​​- 類似於點積 - 我可以得到正確的答案。當我將它們轉換爲花車,我得到一個類型錯誤:爲什麼我在嘗試使用點積時會得到TypeError?

類型錯誤:無法按類型「浮動」

sig = {'a': 1.0, 'b': 2.0, 'c': 3.0} 
exp = {'a': (1.0,2.0,3.0), 'b': (1.0,2.0,3.0), 'c': (1.0,2.0,3.0)} 
man_dot = {'a': 1*1+1*2+1*3, 'b': 2*1+2*2+2*3, 'c': 3*1+3*2+3*3} 

weighted_dict = {} 
for s in sig: 
    print("this is s:\n{}".format(s)) 
    for e in exp: 
     print("this is e:\n{}".format(e)) 
     weighted_dict[s] = sum(sig[s] * exp[e]) 
# weighted_dict should be equivalent to man_dot 
# weighted_dict should be {'a': 6, 'c': 18, 'b': 12} 
花車

該腳本必須處理操作的非INT繁衍序列,這樣怎麼能我修改它來做到這一點?爲什麼會發生?有沒有更好的做一些面向數學的圖書館?

回答

1

你的問題是你試圖乘以(1.0, 2.0, 3.0)1.0,這給出了上述錯誤。請嘗試以下操作:

sig = {'a': 1.0, 'b': 2.0, 'c': 3.0} 
exp = {'a': (1.0,2.0,3.0), 'b': (1.0,2.0,3.0), 'c': (1.0,2.0,3.0)} 
man_dot = {'a': 1*1+1*2+1*3, 'b': 2*1+2*2+2*3, 'c': 3*1+3*2+3*3} 

weighted_dict = {} 
for s in sig: 
    print("this is s:\n{}".format(s)) 
    for e in exp: 
     print("this is e:\n{}".format(e)) 
     weighted_dict[s] = sum([sig[s] * item for item in exp[e]]) 

>>> weighted_dict 
{'c': 18.0, 'a': 6.0, 'b': 12.0} 
>>> 
+0

指教,謝謝。所以問題是我沒有遍歷{exp}的元組值。但爲什麼它使用整數而不是浮點數? –

相關問題