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
相关产品推荐
相关产品推荐

