Python:如何通过for循环生成字典列表?代码问题求助
问题分析与修改方案
原代码有两个关键问题导致无法生成汇总的字典列表:
complete_list在循环内部定义,每次循环都会重新创建空列表,没法累积所有字母对应的字典- 循环里复用同一个
letters_dict对象,每次修改都是覆盖该字典的内容,最终列表里的所有元素都会指向同一个字典,值会被最后一次循环的结果覆盖
修改后的代码
class Word(): def __init__(self, chosen_word=''): self.chosen_word = chosen_word def create_list_dict(self): letter_list = list(self.chosen_word) complete_list = [] # 把列表初始化移到循环外 for letter in letter_list: # 每次循环创建新字典,避免复用同一对象 letters_dict = { 'letter': letter, 'guessed': False } complete_list.append(letters_dict) return complete_list # 返回汇总后的列表 hello = Word('hello') print(hello.create_list_dict())
代码说明
- 将
complete_list的初始化移到for循环外部,确保每次循环都能往同一个列表里添加元素 - 把
letters_dict的定义放到循环内部,每次迭代都创建新的字典对象,保证每个字母对应独立的字典 - 新增
return complete_list语句,让方法能返回最终的汇总列表,方便外部调用和打印
运行修改后的代码,输出结果为:
[{'letter': 'h', 'guessed': False}, {'letter': 'e', 'guessed': False}, {'letter': 'l', 'guessed': False}, {'letter': 'l', 'guessed': False}, {'letter': 'o', 'guessed': False}]
内容的提问来源于stack exchange,提问作者Ely Trendell
相关产品推荐
相关产品推荐

