如何根据指定列表首元素匹配字典列表,提取后续键对应的值?
自动匹配字典提取对应值的实现方案
问题说明
我有多个键相同但值不同的字典,已存入列表group_selection。需要实现:给定一个输入列表,用列表首字符串元素匹配对应字典('1'对应group1,'2'对应group2,'3'对应group3),再用列表剩余字符串作为键,从匹配到的字典中提取对应值。
目前仅能手动指定字典索引完成需求,希望实现自动匹配。例如:
- 输入
['1', '2', '4', '5'],返回[[0, 0], [2, 2], [4, 4], [5, 5]] - 输入
['3', '1'],返回[[3, 3]](注:原描述此处可能笔误,根据给定group3字典,键'1'对应值为[3,3])
实现代码
# 定义各分组字典 group1 = {'1': [0, 0], '2': [2, 2], '3': [3, 3], '4': [4, 4], '5': [5, 5]} group2 = {'1': [2, 2], '2': [0, 0], '3': [4, 4], '4': [5, 5], '5': [6, 6]} group3 = {'1': [3, 3], '2': [4, 4], '3': [0, 0], '4': [6, 6], '5': [7, 7]} # 创建分组映射表,直接用字符串标识关联对应字典 group_map = { '1': group1, '2': group2, '3': group3 } def extract_target_values(input_list): # 拆分分组标识和待提取的键列表 group_identifier, *target_keys = input_list # 获取目标字典 target_dict = group_map[group_identifier] # 批量提取对应值 return [target_dict[key] for key in target_keys] # 测试示例 example = ['2', '5', '3', '3', '1', '2'] print(extract_target_values(example)) # 输出: [[0, 0], [6, 6], [4, 4], [4, 4], [2, 2], [0, 0]] test_case1 = ['1', '2', '4', '5'] print(extract_target_values(test_case1)) # 输出: [[0, 0], [2, 2], [4, 4], [5, 5]] test_case2 = ['3', '1'] print(extract_target_values(test_case2)) # 输出: [[3, 3]]
代码说明
- 分组映射表:通过
group_map将字符串标识与对应的字典绑定,替代手动索引,实现快速匹配。 - 列表解包:用
group_identifier, *target_keys = input_list快速拆分首元素和剩余键列表,代码更简洁。 - 列表推导式:批量遍历键列表提取对应值,高效完成取值操作。
内容的提问来源于stack exchange,提问作者AquaBearing
相关产品推荐
相关产品推荐

