所以,我想知道是否可以在循环中使用字典中名称相似的文件
我有这个字典:
dcm = {}
for filename in os.listdir('./GMATfiles'):
if fnmatch.fnmatch(filename,'DCM_hydra*.txt'):
dcm[filename[:11]] = os.path.normpath(''.join(['./GMATfiles', '/', filename]))
#print(dcm)
#OUT_INPUT
out={}
for filename in os.listdir('./GMATfiles'):
if fnmatch.fnmatch(filename,'Out_hydra*.txt'):
out[filename[:11]] = os.path.normpath(''.join(['./GMATfiles', '/', filename]))
#print(out)
#MATRIX_INPUT
mtr={}
for filename in os.listdir('./GMATfiles'):
if fnmatch.fnmatch(filename,'matrizr_hydra*.txt'):
mtr[filename[:15]] = os.path.normpath(''.join(['./GMATfiles', '/', filename]))
#print(mtr)
我从这些词典中的每一个那里得到的名字都是一样的,除了一个数字
(例如:DCM_hydra01, DCM_hydra02, DCM_hydra03
等)
然后我需要在某些功能中使用字典中的这些文件:
IFOV1= gi.IFOV_generic(out['Out_hydra01'],mtr['matrizr_hydra01'], dcm['DCM_hydra01'],endpoint)
IFOV2= gi.IFOV_generic(out['Out_hydra02'],mtr['matrizr_hydra02'], dcm['DCM_hydra02'],endpoint)
.
.
.
有没有一种方法可以编写循环,而无需逐个编写这些 IFOV 函数?
答案 0 :(得分:0)
您可以尝试通过zip()
函数遍历字典,例如下面的示例。它为您列出了所有文件的所有功能。但是不要忘记,所有格言中的len应该相等
dcm = {'f1': 'path_to_file'}
out = {'f1': 'path_to_file'}
mtr = {'f1': 'path_to_file'}
IFOV = []
for d, o, m in zip(dcm, out, mtr):
IFOV.append(
gi.IFOV_generic(out[o], mtr[m], dcm[d], endpoint)
)