Python中如何遍历列表里的字典而非其内容?
问题分析与解决方法
你的代码核心问题在于:
sections = [dairy, snacks]中存储的是字典的实际内容,而非变量名;- 用
str(i)把字典转成字符串后,得到的是字典内容的文本(比如{'milk':5, ...}),这和你输入的dairy完全不匹配,所以永远无法触发赋值逻辑。
要实现通过输入变量名(如dairy)直接获取对应字典对象的需求,最直接的方式是创建一个名字-字典的映射关系,具体实现如下:
代码实现
# 定义你的字典 dairy = {"milk": 5, "cheese": 3} snacks = {"chips": 2, "cookies": 4} # 创建名字到字典的映射 section_map = { "dairy": dairy, "snacks": snacks } choice = input("> ") # 通过输入的名字直接获取对应的字典,用get避免输入不存在时报错 section_choice = section_map.get(choice) # 输出结果 if section_choice: print(section_choice) else: print("没有找到对应的分类")
为什么这样可行?
section_map的键是你需要输入的字典名称(字符串形式),值就是对应的字典对象。当你输入dairy时,直接通过section_map["dairy"]就能拿到dairy这个字典本身,完全符合你"直接将字典赋值给section_choice"的需求。
如果一定要用遍历的方式(效率更低,不推荐),可以遍历映射的键值对:
section_choice = None for name, section in section_map.items(): if name == choice: section_choice = section break print(section_choice if section_choice else "没有找到对应的分类")
内容的提问来源于stack exchange,提问作者Captain_Wiz08
相关产品推荐
相关产品推荐

