如何重排列表:将第二列条目转为行并建立反向关联
列表结构反转的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)}")
运行方法
- 把上面的代码复制到文本编辑器,保存为
convert_list.py - 确保你的电脑安装了Python(官网下载选默认安装即可)
- 打开命令行,进入保存文件的文件夹,运行命令:
python convert_list.py - 就能得到你想要的输出结果
扩展说明
如果你的原始数据是保存在文本文件里的,可以把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
相关产品推荐
相关产品推荐

