类型错误:保存字典时'float'对象不可下标



我在尝试使用 pickle 保存字典时不断收到此错误,有人可以帮忙吗?

Traceback (most recent call last):
  File "/home/euan/Documents/Python/Task 1.04.py", line 31, in <module>
    change_rate()
  File "/home/euan/Documents/Python/Task 1.04.py", line 9, in change_rate
    rates.update(new_rate[old_rate])
TypeError: 'float' object is not subscriptable

我的代码是:

import pickle
rates = {"Dollar": 0.67, "Pound": 0.47, "Euro": 0.00, "Yen": 0.00}
rates = pickle.load(open("rates.dat" , "rb"))
def change_rate():
 i = input("Which exchange rate would you like to change? Dollar, Pound, Euro,Yen:")
 old_rate = rates[i]
 new_rate = float(input("Please input the new exchange rate: "))
 rates.update(new_rate[old_rate])
 pickle.dump(rates,open("rates.dat", "wb"))
 rep = input("Would you like to change another rate y/n? ")
 if rep == "y":
     change_rate()
 else:
     pass

你把new_rate做一个float值,然后尝试把它当作一个数组(new_rate[old_rate])。下标(从数组中选择一个项目)在应用于浮点数时毫无意义;这正是错误消息试图告诉您的。

你不需要update来修改字典。只需更改单个条目即可。

rates[i] = new_rate

new_rateold_rate 都是浮点数,像您尝试的那样在浮点数上做下标是没有意义的:new_rate[old_rate] .

替换它:

rates.update(new_rate[old_rate])

自:

rates.update([(i,new_rate)])

如果要使用dict.update

简单地说,你可以做到:

rates[i] = new_rate

最新更新