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

Python for循环同时遍历两个嵌套字典报错的解决方法

问题根因

你写的循环存在两个核心问题:

  • 迭代语法错误:for columnName,columnData in dict2.items(),dict1.items(): 写法会将两个字典的items对象打包为元组遍历,第一次迭代仅读取dict2的内容,第二次仅读取dict1的内容,无法在单次循环中同时获取两个字典的同名列数据,直接触发键不存在的报错。
  • 取值逻辑错误:两个字典的内层键类型完全不匹配,dict1内层键是收入区间文本,dict2内层键是数字ID,直接用相同key跨字典取值本身不成立。

Error Picture

正确实现方案

两个字典外层的列名完全一致,先提取dict1中按定义顺序排列的收入文本列表,再将dict2中的数字ID按对应计数值降序排序,按顺序一一配对即可完成映射。

# 遍历两个字典共有的外层列名
for col in dict1.keys():
    # 提取dict1中按原有顺序排列的收入区间文本
    income_texts = list(dict1[col].keys())
    # 将dict2中的数字键按对应数值从大到小排序
    sorted_num_keys = [k for k, v in sorted(dict2[col].items(), key=lambda item: -item[1])]
    # 构建数字键到收入文本的映射
    res = {}
    for i, num_key in enumerate(sorted_num_keys):
        res[num_key] = income_texts[i]
    # 更新dict2
    dict2[col] = res
效果说明

运行后dict2的输出完全匹配预期格式:

'Please select your father/guardian monthly Income from these options.': {
    1: 'Between 25k to 50k',
    2: 'Between 75k to 100k',
    3: 'Between 50k to 75k',
    4: 'Between 100k to 150k',
    7: 'Between 150k to 200k',
    10: 'Between 200k to 250k',
    8: "Father don't do any job",
    5: 'Between 10k to 25k',
    # 其余数字键按排序顺序匹配对应收入区间
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:54:19