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

Python:列表元素与字典匹配后如何得到预期输出?

字典与列表匹配的代码修正问题

问题描述

现有字典 my_dict = {'one': 1, 'two': 2, 'three': 3} 与列表 my_keys = ['three', 'one','ten','one'],原代码如下:

solutions = []
for key,value in my_dict.items():
    found = False
    for i in my_keys:
        if i in key:
            solutions.append(value)
            found = True
            break
    if not found:
        solutions.append('Nan')

运行后得到输出:['Nan', 1, 'Nan', 'Nan', 'Nan', 'Nan', 3],但预期输出为:['3', '1', 'Nan', '1'],需要修改代码以获取预期输出。

问题根源

原代码的逻辑完全搞反了:你原本是遍历字典的键值对去匹配列表元素,但实际需求应该是遍历列表里的每个元素,去字典中查找对应值——毕竟预期输出的长度和my_keys的长度(4个元素)完全一致,原代码的输出长度明显不符合需求。另外,原代码用了子串匹配if i in key,但这里我们需要的是精确匹配键名,同时预期输出里的数值是字符串格式,也要注意这一点。

修正后的代码

my_dict = {'one': 1, 'two': 2, 'three': 3}
my_keys = ['three', 'one','ten','one']
solutions = []

# 遍历目标列表my_keys,保证输出长度和需求一致
for current_key in my_keys:
    # 精确检查当前元素是否是字典的有效键
    if current_key in my_dict:
        # 将数值转为字符串后加入结果列表
        solutions.append(str(my_dict[current_key]))
    else:
        # 找不到对应键时添加'Nan'
        solutions.append('Nan')

print(solutions)  # 输出: ['3', '1', 'Nan', '1']

代码说明

  • 逻辑方向调整:从遍历字典改为遍历my_keys,确保输出列表的长度和预期一致;
  • 精确匹配:用current_key in my_dict判断元素是否为字典的有效键,避免原代码中子串匹配的误判风险;
  • 格式统一:把字典中的数值转为字符串,和预期输出的'3'、'1'格式对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:29:59