You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将下划线分割的字符串列表转为单键值对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:55:10