首页 > 解决方案 > 如何仅使用用户输入的值从字典中删除键

问题描述

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

问题: 要求用户输入他们最喜欢的 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))

我不确定我是否误解了这个问题,但我遇到的主要问题是一旦用户输入他们想要删除的食物(假设总是输入字典中的输入)我无法删除密钥食物在里面(不能删除键和值)。我知道我必须索引一些东西,但仍然不确定

提前致谢

标签: pythondictionary

解决方案


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()”,它会将键设置为键,将值设置为值,这我假设你想要。

接下来,您只需告诉它,如果键的值与用户输入的值相同,则使用 .pop 删除基于值的键:值对。

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


推荐阅读