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

如何重排列表:将第二列条目转为行并建立反向关联

列表结构反转的Python实现方案

针对你需要的列表结构转换需求,下面用Python写一个简单易懂的脚本,适合新手学习:

核心思路

把原数据里每个string^description作为键,收集所有关联的第一列字母,最后按要求格式输出。

完整脚本

# 定义原始数据,每行按实际输入格式写
raw_data = [
    "A   string1^description1`string2^description2`string3^description3",
    "B   string4^description4",
    "C   string1^description1`string5^description5`string3^description3",
    "D   .",
    "E   string6^description6`string1^description1",
    "F   string7^description7",
    "G   string1^description1`string4^description4`string5^description5"
]

# 初始化字典,用来存储每个字符串对应的字母
result_dict = {}

# 遍历每一行数据
for line in raw_data:
    # 分割每行,第一部分是字母,第二部分是关联的字符串集合
    # split(maxsplit=1)只分割一次,避免字符串里有空格的情况
    parts = line.split(maxsplit=1)
    if len(parts) < 2:
        continue  # 跳过格式不对的行
    letter, str_part = parts
    # 如果第二部分是.,直接跳过
    if str_part.strip() == ".":
        continue
    # 用`分割成单个的string^description项
    string_items = str_part.split("`")
    for item in string_items:
        item = item.strip()  # 去除可能的空格
        if not item:
            continue
        # 如果字典里没有这个键,就新建一个空列表
        if item not in result_dict:
            result_dict[item] = []
        # 把字母添加到对应的列表里,避免重复(如果有重复的话)
        if letter not in result_dict[item]:
            result_dict[item].append(letter)

# 输出结果,按要求格式打印
for key, letters in result_dict.items():
    # 键后面跟制表符,然后字母用空格分隔
    print(f"{key}\t{'   '.join(letters)}")

运行方法

  1. 把上面的代码复制到文本编辑器,保存为convert_list.py
  2. 确保你的电脑安装了Python(官网下载选默认安装即可)
  3. 打开命令行,进入保存文件的文件夹,运行命令:python convert_list.py
  4. 就能得到你想要的输出结果

扩展说明

如果你的原始数据是保存在文本文件里的,可以把raw_data部分改成读取文件的代码:

# 读取文件里的内容,替换上面的raw_data定义
with open("your_input_file.txt", "r", encoding="utf-8") as f:
    raw_data = f.readlines()

脚本里用maxsplit=1分割每行,是为了避免string^description里如果有空格的话被误分割,更稳妥。

内容的提问来源于stack exchange,提问作者alex kiarie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:45:46