Haskell按首个元素合并两个元组列表的实现方法
按元组首元素合并两个元组列表的实现方法
方法一:基于字典的通用合并(适用于key顺序不一致或存在缺失的场景)
先将两个列表转换为以元组首元素为键的字典,再遍历键值对完成合并,这种方式能处理两个列表key顺序不同的情况,也能方便扩展处理key缺失的场景。
代码示例:
list1 = [("key-1", "Type1", "Type2", "Type3"), ("key-2", "Type1", "Type2", "Type3")] list2 = [("key-1", "Type4"), ("key-2", "Type4")] # 转换为字典,键是元组首元素,值是剩余元素组成的元组 dict_list1 = {item[0]: item[1:] for item in list1} dict_list2 = {item[0]: item[1:] for item in list2} # 遍历键合并元组 merged_result = [] for key in dict_list1: # 拼接键与两个字典对应的元素元组 combined_tuple = (key,) + dict_list1[key] + dict_list2[key] merged_result.append(combined_tuple) print(merged_result)
方法二:顺序匹配合并(适用于两个列表key顺序完全一致且无缺失的场景)
如果能保证两个列表的元组按相同key顺序排列,直接用zip配对对应位置的元组,再拼接即可,代码更简洁。
代码示例:
list1 = [("key-1", "Type1", "Type2", "Type3"), ("key-2", "Type1", "Type2", "Type3")] list2 = [("key-1", "Type4"), ("key-2", "Type4")] # 配对两个列表的元组,拼接时跳过第二个元组的重复key merged_result = [t1 + t2[1:] for t1, t2 in zip(list1, list2)] print(merged_result)
两种方法最终输出结果均为:
[("key-1", "Type1", "Type2", "Type3", "Type4"), ("key-2", "Type1", "Type2", "Type3", "Type4")]
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

