Python如何基于列表元素点号前的子串自动拆分列表
实现方案
推荐使用字典存储动态分组结果,无需提前硬编码所有可能的前缀,可自动适配后续新增的ds_c、ds_d等场景。
方法1:使用collections.defaultdict(代码更简洁)
from collections import defaultdict lst = ['ds_a.cola','ds_a.colb','ds_b.cola','ds_b.colb'] grouped = defaultdict(list) for item in lst: # 提取点号前的前缀,split第二个参数设为1避免元素含多个点时拆分异常 prefix = item.split('.', 1)[0] grouped[prefix].append(item)
运行后grouped的结构为:
{ 'ds_a': ['ds_a.cola', 'ds_a.colb'], 'ds_b': ['ds_b.cola', 'ds_b.colb'] }
需要使用某组数据时直接取字典对应key即可:grouped['ds_a'],新增前缀会自动生成对应key,无需修改代码。
方法2:使用原生字典(无需导入模块)
如果不想导入额外模块,可以用字典的setdefault方法实现相同效果:
lst = ['ds_a.cola','ds_a.colb','ds_b.cola','ds_b.colb'] grouped = {} for item in lst: prefix = item.split('.', 1)[0] grouped.setdefault(prefix, []).append(item)
可选:单独赋值给指定变量
如果确实需要和原示例一样的单独变量,可以从分组字典中取值:
lst_dsa = grouped.get('ds_a', []) lst_dsb = grouped.get('ds_b', [])
内容的提问来源于stack exchange,提问作者Fazli
相关产品推荐
相关产品推荐

