如何基于参数重复Python字典内容以扩展列表长度?
实现基于参数重复字典扩展列表长度
原代码回顾
首先先确认你当前的基础代码:
l1 = list(range(10)) l2 = [False for i in range(10)] target_dict = {l1[i]: l2[i] for i in range(len(l1))} res = [target_dict] # 初始为包含单个字典的列表
两种实现方式
根据你是否需要后续修改字典内容,有两种不同的实现方案:
方案1:快速生成引用相同的字典(无需独立修改)
如果不需要单独修改列表中的某个字典,直接用列表乘法就能快速生成包含x个相同字典的列表:
x = 2 res = [target_dict] * x
或者一步到位跳过初始单字典列表:
x = 2 res = [{l1[i]: l2[i] for i in range(len(l1))}] * x
注意:这种方式下,列表里的所有字典都指向同一个内存对象,修改其中任意一个字典的键值对,会同步影响列表里的所有字典。
方案2:生成独立的字典副本(支持单独修改)
如果需要后续单独调整列表中的某个字典而不影响其他,用列表推导式创建字典的独立副本:
x = 2 target_dict = {l1[i]: l2[i] for i in range(len(l1))} res = [dict(target_dict) for _ in range(x)]
也可以用copy模块的浅拷贝方法实现同样效果:
import copy x = 2 target_dict = {l1[i]: l2[i] for i in range(len(l1))} res = [copy.copy(target_dict) for _ in range(x)]
这种方式生成的每个字典都是独立对象,修改其中一个不会对其他字典产生影响。
内容的提问来源于stack exchange,提问作者Anas.S
相关产品推荐
相关产品推荐

