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

如何正确遍历Python字典中每个键对应的列表值?

问题原因

你的代码问题出在计数器counter的作用域错误:

  • 你把counter初始化在了外层遍历字典的for循环外部,第一次处理ch1对应的列表时,counter从0开始累加,直到值等于2(ch1对应列表长度为2),退出while循环。
  • 当循环进入下一轮处理ch2时,counter的值仍然是2,没有被重置为0,此时判断2 < 3(ch2对应列表长度为3)条件成立,直接读取val[2]也就是testmsg5打印,随后counter累加为3,不满足循环条件直接退出,因此只会打印ch2的最后一个元素。
修复方法

方法1:调整计数器位置

把计数器的初始化放到for循环内部,每次处理新的键值对时都把计数器重置为0即可:

msgs = {}
msgs['ch1']=['testmsg1', 'testmsg2']
msgs['ch2']=['testmsg3','testmsg4','testmsg5']

for key, val in msgs.items():
    counter = 0  # 每次遍历新键时重置计数器
    while counter < len(val):
        print(key, val[counter])
        counter += 1

方法2:更符合Python习惯的写法

Python中遍历列表不需要手动维护索引计数器,直接迭代列表元素即可,代码更简洁也不容易出错:

msgs = {}
msgs['ch1']=['testmsg1', 'testmsg2']
msgs['ch2']=['testmsg3','testmsg4','testmsg5']

for key, val in msgs.items():
    for item in val:
        print(key, item)

运行上述任意一段代码,都能得到你期望的输出:

ch1 testmsg1
ch1 testmsg2
ch2 testmsg3
ch2 testmsg4
ch2 testmsg5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:33:21