如何用for循环初始化包含W1到W100空列表的Python字典
问题解决方法
你出现的错误核心有两点:一是动态拼接字符串生成键名的语法不符合Python规范,二是range范围设置错误,会缺失W100这个键。
字典初始化修正
正确写法如下,使用f-string实现键名的动态生成,同时调整range范围覆盖1到100:
res = {'lambda' : []} # range(1, 101)会生成1~100的整数,刚好对应W1到W100的编号 for i in range(1, 101): res.update({f'W{i}': []})
如果想要更简洁的写法,Python 3.9及以上版本可以用字典推导式+字典合并运算符一步完成初始化:
res = {'lambda': []} | {f'W{i}': [] for i in range(1, 101)}
如果使用Python 3.6以下不支持f-string的版本,可以把f'W{i}'替换为'W{}'.format(i)或者'W' + str(i),效果完全一致。
列表追加值修正
同样使用f-string生成键名即可,注意如果你的W列表下标从0开始对应W1的取值,要对应下标偏移:
for i in range(1, 101): res[f'W{i}'].append(W[i-1])
内容的提问来源于stack exchange,提问作者mlqa
相关产品推荐
相关产品推荐

