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

Python键值对匹配:实现指定格式的输出转换求助

解决Python键值对合并问题

我来帮你搞定这个重复键值合并的需求!你需要把同一个键对应的多个值拼接在一起,生成紧凑的键值对格式,下面是具体的解决方案:

核心思路

用字典来累积同一个键的所有值,先遍历提取所有输入的键值对,把相同键的值逐一拼接,最后再按要求的格式输出合并后的结果。

完整代码

import sys
import re
from collections import OrderedDict  # 如需严格保持键的输入顺序则使用

def main():
    # 读取输入内容(也可以直接替换成你实际的输入字符串)
    input_content = sys.stdin.read().strip()
    
    # 精准提取所有<键> - <值>格式的单元,正则可根据你的键值实际格式调整
    key_value_pairs = re.findall(r'(\S+) - (\S+)', input_content)
    
    # 初始化有序字典(Python3.7+的普通字典默认也会保留插入顺序)
    merged_dict = OrderedDict()
    
    # 遍历键值对,合并相同键的所有值
    for key, value in key_value_pairs:
        if key in merged_dict:
            merged_dict[key] += value
        else:
            merged_dict[key] = value
    
    # 生成期望的输出格式
    output = ' '.join([f"{key} - {merged_val}" for key, merged_val in merged_dict.items()])
    
    # 打印最终结果
    print(output)

if __name__ == "__main__":
    main()

代码说明

  1. 输入解析:用正则表达式re.findall(r'(\S+) - (\S+)', input_content)提取所有键值单元,\S+匹配任意非空白字符——如果你的键/值包含空格,可以调整正则(比如值用引号包裹的话,改成r'(\S+) - "([^"]+)"')。
  2. 值合并:用OrderedDict确保键的顺序和输入完全一致,普通字典在Python3.7及以上版本也默认会保留插入顺序。
  3. 输出生成:把字典里的键值对转换成要求的字符串格式,用空格拼接后输出。

示例测试

如果输入是:

mykey - myval x - val1 x - val2 x - val3 y - abc y - def y - ghi

运行代码后会输出:

mykey - myval x - val1val2val3 y - abcdefghi

完全符合你期望的格式!

内容的提问来源于stack exchange,提问作者Eddie Vu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:35:04