如何根据特定表达式将字符串列表保存在子列表中? [英] How to save a list of string in sublists according specific expression?

查看:89
本文介绍了如何根据特定表达式将字符串列表保存在子列表中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做一个脚本来将读取路径保存在子列表中.假设我在一个列表中保存了400个文件路径,每个路径都有特定的语法Ci_whaterver.csv,然后在我的路径列表中我有这样的内容:

I'm doing a script to save a read path in sublist. Let's suppose I have 400 file paths saved in a list, every path has the specific syntax Ci_whaterver.csv, then in my pathlist I have something like this:

pathlist=[C1_01.csv,C1_02.csv,...,Cn_01.csv,Cn_02.csv] 

在这种情况下,我最终希望订购pathlistf或进行排序:

I would like to have finally a pathlistf ordered or sort with this situation:

pathlistf=[[C1_01.csv,C1_02.csv,...],[C2_01.csv,C2_02.csv,...],...,[Cn_01.csv,Cn_02.csv,...]]

我不知道如何重新排序这种方式.

I don't have idea to reorder the path to this way.

您好,我遇到了这个问题: 我想问一个与过去的情况非常相似的事情,假设我走了下一条路: path=[case1_Qxxx_cap1_whatever.csv,case1_Qxxx_cap1_whatever2.csv,case1_Qxxx_cap1_whatever3.csv,....,case1_Qxxx_cap2_whatever.csv,case1_Qxxx_cap2_whatever2.csv,case1_Qxxx_cap2_whatever3.csv,case2_Qxxx_cap1_whatever.csv,case2_Qxxx_cap1_whatever2.csv,...,case2_Qxxx_cap2_whatever.csv,case2_Qxxx_cap2_whatever2.csv]

Hello again, i got this problem: I would like to ask something very similar to the past case, let suppose i have the next path: path=[case1_Qxxx_cap1_whatever.csv,case1_Qxxx_cap1_whatever2.csv,case1_Qxxx_cap1_whatever3.csv,....,case1_Qxxx_cap2_whatever.csv,case1_Qxxx_cap2_whatever2.csv,case1_Qxxx_cap2_whatever3.csv,case2_Qxxx_cap1_whatever.csv,case2_Qxxx_cap1_whatever2.csv,...,case2_Qxxx_cap2_whatever.csv,case2_Qxxx_cap2_whatever2.csv]

我想要这个:

pathf=[[[case1_Qxxx_cap1_whatever.csv,case1_Qxxx_cap1_whatever2.csv,...],[case1_Qxxx_cap2_whatever.csv,Qxxx_cap2_whatever2.csv,...]],[[case2_Qxxx_cap1_whatever.csv,case2_Qxxx_cap1_whatever2.csv,...],[case2_Qxxx_cap2_whatever.csv,case2_Qxxx_cap2_whatever2.csv,...]]]

推荐答案

一种方法是创建字典,并使用部分Ci作为键,并且以Ci开头的文件名列表将为该值.例如,使用pathlist = ['C1_01.csv','C1_02.csv', 'C2_01.csv' , 'C3_01.csv', 'C2_02.csv'],然后我们将创建一个字典来存储

One way will be to create a dictionary and use the part Ci as key and lists of file names starting with Ci will be the value. For example, take pathlist = ['C1_01.csv','C1_02.csv', 'C2_01.csv' , 'C3_01.csv', 'C2_02.csv'], then we will create a dictionary which will store

{'C1': ['C1_01.csv', 'C1_02.csv'], 'C2': ['C2_01.csv', 'C2_02.csv'], 'C3': ['C3_01.csv']}

这是代码:

pathlist = ['C1_01.csv','C1_02.csv', 'C2_01.csv' , 'C3_01.csv', 'C2_02.csv']
d = {}
for path in pathlist:
    if path[:2] not in d:
        d[path[:2]] = [path]
    else:
        d[path[:2]].append(path)
pathlistf = []
for key in d:
    pathlistf.append(d[key])
print(pathlistf)
# Output: [['C1_01.csv', 'C1_02.csv'], ['C3_01.csv'], ['C2_01.csv', 'C2_02.csv']]

希望这可以解决问题.随时提出任何疑问.

Hope this solves the problem. Feel free to ask any doubt.

这篇关于如何根据特定表达式将字符串列表保存在子列表中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆