2017-04-09 86 views
0

我正在学习python,我试图使用我构建的这个函数,它不工作。尽管它应该这样做,但函数并没有改变字典中的单个值,因为它正在工作。我想获得一些帮助如何减去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

错误在此代码段:

value = value - 1 
if (value == 0): 
    del diction[key] 

而是在字典修改值的,你只修改局部值。所以,只有当值恰好是这个函数会删除所需的条目1

可以按如下方式或它的任何变化修改:

if value == 1: 
     del diction[key] 
     break 
    else: 
     diction[key] = value - 1 

而且,请注意,您必须打破从词典中删除条目后,for循环的名称。如果在迭代它时修改字典,那么迭代器在此之后将不起作用。如果要在一次迭代中删除多个键,请首先获取要在循环中删除的所有键的列表,并在循环后删除。