如何自动向字典的已有主键添加带值的新子键?
问题分析与解决方案
你的代码问题在于每次循环都完全重新创建了store_dic字典,之前循环添加的内容会被直接覆盖,所以最后只保留了最后一次循环的结果。
方案1:先初始化嵌套结构,循环添加键值对
先创建好包含空books子字典的主字典,之后每次循环只往books里新增键值对:
store_dic = {'books': {}} for i in range(3): # 用f-string生成键名,比拼接字符串更简洁 book_key = f"book{i}" store_dic['books'][book_key] = i print(store_dic)
输出:
{'books': {'book0': 0, 'book1': 1, 'book2': 2}}
方案2:用字典推导式(更简洁)
如果不需要中间步骤,直接用字典推导式一步生成目标字典:
store_dic = {'books': {f"book{i}": i for i in range(3)}} print(store_dic)
输出和上面完全一致。
额外说明
你原来定义的book_list其实是多余的,不管用哪种方案都可以直接生成键名,不需要额外维护列表。
内容的提问来源于stack exchange,提问作者i33SoDA
相关产品推荐
相关产品推荐

