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()
代码说明
- 输入解析:用正则表达式
re.findall(r'(\S+) - (\S+)', input_content)提取所有键值单元,\S+匹配任意非空白字符——如果你的键/值包含空格,可以调整正则(比如值用引号包裹的话,改成r'(\S+) - "([^"]+)"')。 - 值合并:用
OrderedDict确保键的顺序和输入完全一致,普通字典在Python3.7及以上版本也默认会保留插入顺序。 - 输出生成:把字典里的键值对转换成要求的字符串格式,用空格拼接后输出。
示例测试
如果输入是:
mykey - myval x - val1 x - val2 x - val3 y - abc y - def y - ghi
运行代码后会输出:
mykey - myval x - val1val2val3 y - abcdefghi
完全符合你期望的格式!
内容的提问来源于stack exchange,提问作者Eddie Vu
相关产品推荐
相关产品推荐

