You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历值为列表的字典,将对应key存入以值命名的列表问题

问题原因
  • 你的变量N在第一次遍历字典第一个键的内层while循环结束后就已经被累加到了12,后续遍历其他键时,N < Max_No的条件始终不成立,内层循环完全不会执行,自然不会往其他列表里添加内容。
  • 额外提示:不推荐直接操作locals()动态创建变量,后续维护难度很高,用一个新字典存储生成的列表会更安全易读。
最小改动修复代码(保留你原有写法逻辑)
# 注意原字典的键要加引号,否则会被识别为未定义变量
Dict = {"keyA":[1, 3, 2], "keyB":[2, 3, 4], "keyC":[1,4,3]}
Max_No = 12
N = 0
while N < Max_No: 
    N = N + 1
    locals()["list"+str(N)] = []

for key, value in Dict.items():
    # 每次处理新的键时重置N,才能重新走完整的数字匹配逻辑
    N = 0
    while N < Max_No:
        N = N + 1
        if N in value:
            locals()["list"+str(N)].append(key)
更推荐的实现方案(无需操作locals,可维护性更高)
Dict = {"keyA":[1, 3, 2], "keyB":[2, 3, 4], "keyC":[1,4,3]}
Max_No = 12
# 用result字典存储结果,键为数字,值为对应的原字典键列表
result = {i:[] for i in range(1, Max_No+1)}
for key, val_lst in Dict.items():
    for num in val_lst:
        if num <= Max_No:
            result[num].append(key)

# 调用方式和你之前的动态变量完全兼容,result[1]等价于之前的list1
print(result[1]) # 输出 ['keyA', 'keyC']
print(result[2]) # 输出 ['keyA', 'keyB']
print(result[3]) # 输出 ['keyA', 'keyB', 'keyC']

内容的提问来源于stack exchange,提问作者FrustratedApe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:36:03