Python如何从字典列表中提取指定Serial对应的所有Slave_ID值列表
实现方案
方案1:单次遍历法(适合少量查询场景)
直接遍历字典列表匹配目标Serial,提取对应Slave_ID即可:
my_dict = [{'Serial': 'AAAAAA', 'Slave_ID': 2},{'Serial': 'BBBBBB', 'Slave_ID': 3}, {'Serial': 'AAAAAA', 'Slave_ID': 5}] def Extract_slave_id(target_serial): result = [] for item in my_dict: if item['Serial'] == target_serial: result.append(item['Slave_ID']) # 如需和示例顺序[5,2]一致,添加反转逻辑,不需要可删除 return result[::-1]
调用测试:执行Extract_slave_id('AAAAAA') 输出结果为 [5, 2],符合需求。
方案2:预构建映射字典(适合多次查询场景)
如果需要频繁调用查询接口,可以提前把所有Serial和对应Slave_ID的映射关系建好,后续单次查询时间复杂度为O(1),性能更高:
my_dict = [{'Serial': 'AAAAAA', 'Slave_ID': 2},{'Serial': 'BBBBBB', 'Slave_ID': 3}, {'Serial': 'AAAAAA', 'Slave_ID': 5}] # 预构建映射关系 serial_map = {} for item in my_dict: serial_val = item['Serial'] if serial_val not in serial_map: serial_map[serial_val] = [] serial_map[serial_val].append(item['Slave_ID']) # 统一反转每个列表,保证输出顺序和示例一致,不需要可删除 for k in serial_map: serial_map[k] = serial_map[k][::-1] def Extract_slave_id(target_serial): return serial_map.get(target_serial, [])
调用测试和方案1结果一致,查询不存在的Serial时会默认返回空列表。
说明:如果不需要严格匹配示例的[5,2]输出顺序,删除两段代码里的反转逻辑即可,默认返回字典列表中Slave_ID的出现顺序[2,5]。
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

