基于列表2索引值合并列表1元素的技术实现需求
列表合并解决方案
问题描述
给定两个列表:
- 列表1:
['GL50IILW', 'GL50IILW', 'NLR1R1RXCH', 'NNH0NNB7', 'QB2XP6MCH', 'QB2XP6MCH', 'KLEESZA1CH', 'KLEESZA1CH', 'UL50IALW', 'UL50IALW', 'UL50IALW', 'BHFFZA', 'BHFFZA', 'BHFFZA'] - 列表2:
[2, 2, 2, 2, 3, 3]
需要依据列表2的索引对应数值,对列表1的元素进行合并处理,得到目标输出:['GL50IILW,GL50IILW','NLR1R1RXCH,NLR1R1RXCH','QB2XP6MCH,QB2XP6MCH','KLEESZA1CH,KLEESZA1CH','UL50IALW,UL50IALW,UL50IALW','BHFFZA,BHFFZA,BHFFZA']
规则解析
- 从列表1中提取所有唯一元素(保留首次出现的顺序),过滤掉无对应输出的元素(如示例中的
NNH0NNB7); - 将过滤后的唯一元素与列表2的数值按索引一一配对,每个元素重复对应数值的次数后,用逗号连接成字符串;
- 把所有连接后的字符串组合成最终列表。
实现代码
list1 = ['GL50IILW', 'GL50IILW', 'NLR1R1RXCH', 'NNH0NNB7', 'QB2XP6MCH', 'QB2XP6MCH', 'KLEESZA1CH', 'KLEESZA1CH', 'UL50IALW', 'UL50IALW', 'UL50IALW', 'BHFFZA', 'BHFFZA', 'BHFFZA'] list2 = [2, 2, 2, 2, 3, 3] # 提取列表1的唯一值并过滤指定元素 unique_values = [val for val in dict.fromkeys(list1) if val != 'NNH0NNB7'] # 按列表2的数值重复元素并拼接成目标格式 result = [','.join([val] * count) for val, count in zip(unique_values, list2)] print(result)
代码说明
dict.fromkeys(list1):快速提取列表1的唯一元素,同时保留元素首次出现的顺序;- 列表推导式过滤掉不需要的
NNH0NNB7元素; zip(unique_values, list2):将过滤后的唯一元素与列表2的数值按索引配对;','.join([val] * count):将单个元素重复指定次数后,用逗号连接成目标格式的字符串。
内容的提问来源于stack exchange,提问作者Duvan Smuts
相关产品推荐
相关产品推荐

