Python 如何仅使用用户输入的值从字典中删除键

Python 如何仅使用用户输入的值从字典中删除键,python,dictionary,Python,Dictionary,我是一名试图完成在线课程任务的学生,我找不到有效的方法来解决这个问题 问题: 请用户输入4种他们最喜欢的食物,并将它们存储在字典中,以便它们以1开始的数字进行索引。完整显示字典,显示项目的索引号。询问他们想要摆脱哪一个,并将其从列表中删除。对剩余数据进行排序并显示 我试过许多可能的解决办法,但似乎都不管用。这就是我到目前为止在python 3.8中所做的: foodcount=0 foods={1:0 ,2:0 ,3:0 ,4: 0} while foodcount<4: food

我是一名试图完成在线课程任务的学生,我找不到有效的方法来解决这个问题

问题: 请用户输入4种他们最喜欢的食物,并将它们存储在字典中,以便它们以1开始的数字进行索引。完整显示字典,显示项目的索引号。询问他们想要摆脱哪一个,并将其从列表中删除。对剩余数据进行排序并显示

我试过许多可能的解决办法,但似乎都不管用。这就是我到目前为止在python 3.8中所做的:

foodcount=0
foods={1:0 ,2:0 ,3:0 ,4: 0}
while foodcount<4:
    food_choice=str(input('enter one of your favourite foods'))
    foodcount += 1
    foods[foodcount] = food_choice

least_fav=str(input('choos a food to delete'))
nowant=foods.index[least_fav]
del foods[nowant]
print(foods)

foods.sort(key=str)
for key,value in foods:
    print(foods(key,value))
我不确定我是否误解了这个问题,但我遇到的主要问题是,一旦用户输入了他们想要删除的食物,就假设用户总是输入一个在dict中的输入,我不能删除食物所在的键,不能删除键和值。我知道我必须索引一些东西,但仍然不能确定


提前感谢

如果你的字典里有食物作为索引,那么使用它们就更容易了。即使他们写错了名字,这也会起作用。如果他们写错了名字,就不会发生任何事情:

foodcount=0
foods = []
while foodcount<4:
    food_choice=str(input('enter one of your favourite foods'))
    foodcount += 1
    foods.append(food_choice)

foods_dict = dict(zip(foods,[1,2,3,4]))
least_fav=str(input('choos a food to delete'))
foods_dict.pop(least_fav, None)

dict不支持.index,因此必须使用for循环来迭代字典

foodcount=0
foods={1:0 ,2:0 ,3:0 ,4: 0}
while foodcount<4:
    food_choice=str(input('enter one of your favourite foods'))
    foodcount += 1
    foods[foodcount] = food_choice

least_fav=str(input('choose a food to delete'))
for key, value in foods.items():
    if value == least_fav:
        foods.pop(key)
        break
print(foods)

for key,value in foods.items():
    print(key,value)
您已经演示了如何使用for循环在字典中循环,但是您必须对其进行一些更改。如果在for循环中使用foods,那么它只会遍历键,所以是1、2、3、4。如果你使用foods.items,它会将key设置为key,value设置为value,我想这是你想要的

接下来,您只需告诉它,如果某个键的值与用户输入的值相同,则使用.pop,它将根据该值删除一个键:值对

除此之外,您只需确保完成后中断,这样就不会出现错误,并使用底部修改后的打印循环来获取键和值。
希望这有帮助

del foods[least_fav]没有索引成员函数。你可能应该颠倒字典:食物应该是键,数字应该是值。
foodcount=0
foods={1:0 ,2:0 ,3:0 ,4: 0}
while foodcount<4:
    food_choice=str(input('enter one of your favourite foods'))
    foodcount += 1
    foods[foodcount] = food_choice

least_fav=str(input('choose a food to delete'))
for key, value in foods.items():
    if value == least_fav:
        foods.pop(key)
        break
print(foods)

for key,value in foods.items():
    print(key,value)