def calculate_average_rating(input):
final = {}
for key in input.keys():
avg = sum(input[key])/len(input[key])
final[key] = avg
return final
我的代碼打算用字典輸入“獅子王(2019)”:[6.0, 7.5, 5.1],“泰坦尼克號(1997)”:[7],并計算每部電影的得分平均值并回傳以字典的形式。例如:“蜘蛛俠(2002)”:[3,2,4,5]} ==> {“蜘蛛俠(2002)”:3.5
我得到的錯誤是
TypeError Traceback (most recent call last)
<ipython-input-134-8a09678d0016> in <module>
----> 1 calculate_average_rating(ratingData)
<ipython-input-133-3a0eaee00f3b> in calculate_average_rating(input)
2 final = {}
3 for key in input.keys():
----> 4 avg = sum(input[key])/len(input[key])
5 final[key] = avg
6 return final
TypeError: unsupported operand type(s) for : 'int' and 'str'
uj5u.com熱心網友回復:
看起來您需要對評級進行預處理:
def calculate_average_rating(ratings):
final = {}
for key in ratings.keys():
film = [float(item) for item in ratings[key]]
avg = sum(film)/len(film)
final[key] = avg
return final
uj5u.com熱心網友回復:
def calculate_average_rating(input):
final = {}
for key in input.keys():
avg = sum(map(lambda x : int(x),input[key]))/len(input[key])
final[key] = avg
return final
uj5u.com熱心網友回復:
試試下面的 1 襯墊
import statistics
data = {"The Lion King (2019)" : ['6.0', '7.5', '5.1'], "Titanic (1997)": ['7']}
avg = {k: statistics.mean([float(x) for x in v]) for k,v in data.items()}
print(avg)
輸出
{'The Lion King (2019)': 6.2, 'Titanic (1997)': 7.0}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/312982.html
