Python 将文件列表循环到字典中;基于字符串
我在一个库中有一堆.csv文件,我想取出它们的内容(它们是NxM矩阵)并将它们放入字典中。它们的大小都相同,一般命名为{means1,means2,…}和{trajectories1,trajectories2,…} 这是我用来获取文件列表的代码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" ) :
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']
我正在寻找一位代码,将
表示\u 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所做的只是在给定的键不存在的情况下初始化字典,这与您自己初始化字典是一样的。我没有说字典有错。我说你不想动态地创建它们。坦率地说,我不明白为什么会有人想这么做;一旦你做到了,你如何引用他们?你怎么知道你有多少人或者他们叫什么?相反,字典是一个显式的容器,它将事物的名称映射到它们的内容。这是一个很好的开箱即用的方法。谢谢