python - 如何仅使用用户输入的值从字典中删除键
问题描述
我是一名试图完成在线课程任务的学生,但我找不到解决此问题的有效方法。
问题: 要求用户输入他们最喜欢的 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 不支持 .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 删除基于值的键:值对。
除此之外,您只需确保在完成后中断,这样您就不会收到错误并使用底部的(修改后的)打印循环来获取键和值。希望这可以帮助!
推荐阅读
- java - 如何从 Firebase 的列表中检索数据?
- vaadin - 在 Vaadin 项目中找不到 nocache.js
- ios - IOS/Swift:使表格视图单元格不可选择,但表格视图仍可在 Swift 中滚动
- android - 从基于 OkHttp 的应用程序访问 WooCommerce Rest API 时出现问题
- javascript - 重复更改 img src 属性时 Google Chrome 中的内存泄漏
- mysql - MySQL - 选择具有某些条件的多个表的指定记录
- rust - git2-rs 包装器中的 `use raw` 和 `raw: raw::git_buf` 是什么意思?
- node.js - 如何使用 babel 构建非 js 文件?
- php - 填写多个值php mysql
- ios - iOS 10 顶部的 UITableView 空间?