Python列表同类型值合并问题:将List2对应值追加至List1
解决列表合并问题的方案
嘿,作为编程新手遇到这个合并问题太正常啦,我来一步步帮你搞定它!
问题分析
你需要的是基于List1的原有结构,把List2中所有同类型子列表的元素,全部合并到List1对应的子列表里,而不是生成多个List1实例。核心难点在于快速定位List1中对应类型的子列表,然后批量追加元素。
解决方案代码
List1 = [['Type A =', 'Value 1', 'Value 2', 'Value 3'], ['Type B =', 'Value 4', 'Value 5']] List2 = [['Type Z =', 'Value 6', 'Value 7', 'Value 8'], ['Type A =', 'Value 9', 'Value 10', 'Value 11'], ['Type A =', 'Value 12', 'Value 13']] # 第一步:把List1转成字典,用类型作为键,方便快速查找对应子列表 type_map = {sublist[0]: sublist for sublist in List1} # 第二步:遍历List2,合并同类型的元素 for sublist in List2: type_key = sublist[0] # 如果当前类型在List1中存在,就追加后续所有元素 if type_key in type_map: type_map[type_key].extend(sublist[1:]) # 第三步:把字典的值转回列表,得到最终结果 new_list = list(type_map.values()) print(new_list)
代码逐行解释
- 创建类型映射字典:
type_map = {sublist[0]: sublist for sublist in List1}这行代码把List1的每个子列表,以其首元素(也就是类型标识)作为键,子列表本身作为值存入字典。这样我们不用每次遍历List1找对应类型,直接通过键就能快速定位,效率更高。 - 遍历List2合并元素:循环List2的每个子列表,先提取类型标识
type_key,如果这个类型在type_map里存在,就用extend()方法把该子列表中除了类型外的所有元素(sublist[1:])追加到对应的子列表中。extend()会把元素逐个加入,而不是把整个子列表当成一个元素添加,正好符合你的需求。 - 恢复列表结构:最后把字典的所有值(也就是合并后的子列表)转换成列表,就得到了和你期望完全一致的
new_list。
运行结果
执行代码后,输出的结果就是你想要的:
[['Type A =', 'Value 1', 'Value 2', 'Value 3', 'Value 9', 'Value 10', 'Value 11', 'Value 12', 'Value 13'], ['Type B =', 'Value 4', 'Value 5']]
这个方法既能处理List2中多个同类型子列表的情况,还能完美保留List1的原有结构,非常适合你的需求哦!
内容的提问来源于stack exchange,提问作者Dean1886
相关产品推荐
相关产品推荐

