不导入库:将多组二维列表转换为键对应值列表的字典
解决方法
你的原始代码思路不对,filter函数是用来筛选可迭代对象中符合条件的元素,没法完成键值对的收集工作。要实现需求,可以按以下方式处理:
基础实现方式
# 假设输入的二维列表如下(匹配你期望的输出) x = [['A', 1], ['B', 2], ['C', 3]] y = [['A', 100], ['B', 200], ['C', 300]] z = [['A', 1000], ['B', 2000], ['C', 3000]] result = {} # 遍历所有输入的二维列表 for lst in [x, y, z]: # 逐个处理每个子列表 for key, value in lst: # 键不存在时初始化空列表 if key not in result: result[key] = [] # 将对应值添加到列表中 result[key].append(value) print(result) # 输出: {'A': [1, 100, 1000], 'B': [2, 200, 2000], 'C': [3, 300, 3000]}
简化写法(用setdefault省掉判断逻辑)
可以利用字典的setdefault方法,一步完成“键不存在则初始化,存在则直接追加值”的操作:
result = {} for lst in [x, y, z]: for key, value in lst: result.setdefault(key, []).append(value)
这段代码和上面的实现效果完全一致,代码更简洁。
内容的提问来源于stack exchange,提问作者hani128
相关产品推荐
相关产品推荐

