Python如何提取字典各键等长列表同位置最小值对应的键
实现方案
你可以利用Python内置的zip函数完成同索引元素的聚合,再逐位比对最小值匹配对应键即可,代码兼容任意数量键、任意等长列表值的输入场景。
核心代码
def min_key_by_index(input_dict: dict) -> list: keys = list(input_dict.keys()) # 按同索引聚合所有列表的元素,逐位找最小值对应的键 return [ keys[values.index(min(values))] for values in zip(*input_dict.values()) ] # 测试示例 if __name__ == "__main__": test_data = {1: [1, 2, 3], 2: [4, 5, 6]} print(min_key_by_index(test_data)) # 输出: [1, 1, 1]
逻辑说明
zip(*input_dict.values())是Python中对嵌套列表做「按列聚合」的常用写法,会把每个键对应列表的同索引元素打包成一个元组,刚好匹配横向同位置比对的需求- Python 3.7及以上版本的字典默认保留插入顺序,因此
keys()返回的键顺序和values()返回的列表顺序完全一一对应,不会出现键值匹配错位 - 若同一索引位置有多个键对应的元素同为最小值,代码会返回最先存入字典的那个对应键;如果需要返回所有对应键,把
index查找逻辑改成遍历匹配所有最小值位置即可
内容的提问来源于stack exchange,提问作者wieluk
相关产品推荐
相关产品推荐

