Python 将文件列表循环到字典中;基于字符串

Python 将文件列表循环到字典中;基于字符串,python,csv,dictionary,pandas,filelist,Python,Csv,Dictionary,Pandas,Filelist,我在一个库中有一堆.csv文件,我想取出它们的内容(它们是NxM矩阵)并将它们放入字典中。它们的大小都相同,一般命名为{means1,means2,…}和{trajectories1,trajectories2,…} 这是我用来获取文件列表的代码 import os import glob my_dir = 'insert your own datapath' filelist = [] os.chdir( my_dir ) for files in glob.glob( "*.csv" ) :

我在一个库中有一堆.csv文件,我想取出它们的内容(它们是NxM矩阵)并将它们放入字典中。它们的大小都相同,一般命名为{means1,means2,…}和{trajectories1,trajectories2,…}

这是我用来获取文件列表的代码

import os
import glob
my_dir = 'insert your own datapath'
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
    filelist.append(files)
哪个输出

['means0.csv',
 'means1.csv',
 'means2.csv',
 'trajectories0.csv',
 'trajectories1.csv',
 'trajectories2.csv']
我正在寻找一位代码,将

  • 提取姓名;在这种情况下,“是指”和“轨迹”
  • 基于每个名称创建一个dict,即
    表示\u dict={}
  • 用相关的.csv文件填写dict。例如,以类似于
    的方式结束,意味着[u dict['0']=('means0.csv')

    希望它有意义

    您真的,真的不想动态创建dict。相反,使用包含dict的键作为“手段”、“轨迹”等,并将值作为文件列表:

    from collections import defaultdict
    import re
    
    filedict = defaultdict(list)
    for filename in glob.glob( "*.csv" ) :
        result = re.match(r'([^\d]+)', filename)
        if result:
            filedict[result.group(1)].append(filename)
    

    您可以使用以下动态字典来完成此操作:

    import os
    import glob
    import re
    my_dir = 'whatever dir'
    
    special_filelist = dict()
    
    filelist = []
    os.chdir( my_dir )
    for files in glob.glob( "*.csv" ) :
        filelist.append(files)
        fileListName = re.match(r'(.*)[0-9]', files).group(1)
        if (fileListName not in special_filelist):
            special_filelist[fileListName] = []
        special_filelist[fileListName].append(files)
    
    
    print special_filelist
    
    在我自己的测试中得出了这个结果:

    {'test': ['test2.csv', 'test0.csv', 'test1.csv'], 'else': ['else0.csv', 'else1.csv']}
    

    您可以发布您尝试过但未成功的内容吗?使用csv模块提取内容。下面是一个关于如何使用BASIC的示例。你应该选择组(1),组(0)始终是完整的字符串。在这种情况下,它们是相同的,但你是对的,谢谢-更正。现在才看到你的答案。为什么我不想使用动态字典?是的,我也想知道它们为什么不好,defaultdict所做的只是在给定的键不存在的情况下初始化字典,这与您自己初始化字典是一样的。我没有说字典有错。我说你不想动态地创建它们。坦率地说,我不明白为什么会有人想这么做;一旦你做到了,你如何引用他们?你怎么知道你有多少人或者他们叫什么?相反,字典是一个显式的容器,它将事物的名称映射到它们的内容。这是一个很好的开箱即用的方法。谢谢