首页 > 解决方案 > 根据子字符串拆分列表元素

问题描述

如何根据点之前的字符串拆分此元素中的元素,而无需在代码中显式编写它?

lst = ['ds_a.cola','ds_a.colb','ds_b.cola','ds_b.colb']

因为“ds”有两种变体。我想要两个列表。

lst_dsa = ['ds_a.cola','ds_a.colb']
lst_dsb = ['ds_b.cola','ds_b.colb']

我的旧代码是:

lst_dsa = []
lst_dsb = []
for item in lst :
    if "ds_a" in item:
        lst_dsa.append(item)
    else:
        lst_dsb.append(item)

但我不能使用它,因为可能有超过 2 个,比如 ds_c,ds_d.... 我如何在 python 中实现这一点?

标签: pythonpandasdataframenumpydata-manipulation

解决方案


使用字典并保存数据

from collections import defaultdict
lst = ['ds_a.cola','ds_a.colb','ds_b.cola','ds_b.colb','ds_x.cola','ds_x.colb']
data = defaultdict(list)
for entry in lst:
  a,_ = entry.split('.')
  data[a].append(entry)
print(data)

输出

defaultdict(<class 'list'>, {'ds_a': ['ds_a.cola', 'ds_a.colb'], 'ds_b': ['ds_b.cola', 'ds_b.colb'], 'ds_x': ['ds_x.cola', 'ds_x.colb']})

推荐阅读