如何用纯Python实现指定列表的格式转换(替代Pandas方案)
问题描述
输入:
my_list = ["x d1","y d1","z d2","t d2"]
期望输出:
Expected_result = ["d1(x,y)","d2(z,t)"]
当前已通过Pandas实现,但希望找到纯Python解决方案,现有Pandas代码如下:
import pandas as pd my_list = ["x d1","y d1","z d2","t d2"] df = pd.DataFrame(my_list,columns=["col1"]) df2 = df["col1"].str.split(" ",expand = True) df2.columns = ["col1","col2"] grp = df2.groupby(["col2"]) result = [] for grp_name, data in grp: res = grp_name +"(" + ",".join(list(data["col1"])) + ")" result.append(res) print(result)
纯Python解决方案
无需依赖第三方库,用基础字典即可实现分组和格式化:
my_list = ["x d1","y d1","z d2","t d2"] group_dict = {} for item in my_list: prefix, suffix = item.split() if suffix not in group_dict: group_dict[suffix] = [] group_dict[suffix].append(prefix) result = [f"{key}({','.join(values)})" for key, values in group_dict.items()] print(result) # 输出: ['d1(x,y)', 'd2(z,t)']
方案说明
- 分组存储:遍历输入列表,将每个元素拆分为前缀和后缀,用字典的键保存后缀,值保存对应前缀的集合。
- 结果格式化:通过列表推导式,遍历字典的键值对,按照指定格式拼接字符串,生成最终结果列表。
注:Python 3.7及以上版本的普通字典默认保留插入顺序,因此结果中元素的顺序会和原输入中后缀首次出现的顺序一致;如果需要兼容更低版本,可以使用
collections.OrderedDict替代普通字典。
内容的提问来源于stack exchange,提问作者Shck Tchamna
相关产品推荐
相关产品推荐

