如何将下划线分割的字符串列表转为单键值对Map列表(处理重复Key)
解决思路与代码实现
嘿,这个需求特别实用——把每个键值对单独封装成一个独立的Map,就能彻底避免重复键覆盖的问题了!我给你分享几个常见编程语言的实现方式:
Java 实现
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class SplitToMapList { public static void main(String[] args) { // 原始输入列表 List<String> inputItems = List.of("12_223", "13_4356", "15_5676"); // 用来存储结果的列表,每个元素是单个键值对的Map List<Map<String, String>> resultList = new ArrayList<>(); for (String item : inputItems) { // 只分割一次,避免值中包含下划线导致的错误分割 String[] keyValuePair = item.split("_", 2); // 为当前键值对创建独立的Map Map<String, String> singleEntryMap = new HashMap<>(); singleEntryMap.put(keyValuePair[0], keyValuePair[1]); // 将独立Map加入结果列表 resultList.add(singleEntryMap); } // 输出结果:[{"12":"223"}, {"13":"4356"}, {"15":"5676"}] System.out.println(resultList); } }
这里用split("_", 2)的小技巧是为了兼容值中包含下划线的场景,确保第一个下划线前面的内容是键,后面的全部作为值,不会出错。
Python 实现
# 原始输入列表 input_list = ["12_223", "13_4356", "15_5676"] # 结果列表 result_list = [] for item in input_list: # 分割一次得到键和值 key, value = item.split("_", 1) # 把单个键值对做成字典,加入结果列表 result_list.append({key: value}) # 输出结果:[{"12": "223"}, {"13": "4356"}, {"15": "5676"}] print(result_list)
Python的实现更简洁,同样用split("_",1)保证分割的准确性,每个循环生成一个独立字典,最后收集成列表即可。
核心思路总结
不管用哪种语言,核心逻辑都是一致的:
- 遍历原始列表中的每一个元素
- 将元素分割为键和值(注意处理值中含下划线的情况)
- 为每一组键值对创建一个独立的Map/字典
- 将这些独立的Map/字典收集到一个大列表中
这样处理后,哪怕后续遇到重复的键,每个键值对都能独立存在,不会出现覆盖的问题。
内容的提问来源于stack exchange,提问作者Jeeppp
相关产品推荐
相关产品推荐

