我正在学习python而我正在尝试使用我构建的这个功能而不能正常工作。该函数不会更改字典中的单个值,因为它现在正在工作,尽管它应该。我想得到一些帮助
def delete_product(diction):
product_to_delete = raw_input()
for key,value in diction.items():
if key == product_to_delete:
value = value - 1
if (value == 0):
del diction[key]
print "removed"
raw_input()
print "we couldnt remove the product because it does not exist"
raw_input()
答案 0 :(得分:0)
此代码段中的错误:
value = value - 1
if (value == 0):
del diction[key]
您只需修改本地值,而不是修改字典中的值。因此,仅当值恰好为1时,此函数才会删除所需的条目。
您可以按照以下方式或其任何变体进行修改:
if value == 1:
del diction[key]
break
else:
diction[key] = value - 1
此外,请注意,一旦从词典中删除条目,您必须跳出for循环。如果在迭代时修改字典,那么迭代器将无法工作。如果要在一次迭代中删除多个键,首先获取循环中要删除的所有键的列表,然后在循环后删除。