将带有变量的一个列表分配给包含数据的其他列表

时间:2018-02-28 13:26:04

标签: python

我想将dirs列表中的文件夹名称分配给vars列表中的变量。主要问题是var具有稳定的项目数,但用户可以更改dirs

import os, sys
path = "C:\BAR_PREK"
dirs = os.listdir( path )
vars = ['VAR0.Value', 'VAR1.Value', 'VAR1.Value', 'VAR3.Value', 'VAR4.Value', 'VAR5.Value', 'VAR6.Value']    

我写的是这样的愚蠢代码:

VAR0.Value = dirs[0]
VAR1.Value = dirs[1]
VAR2.Value = dirs[2]
<...>

但是如果我们得到空的dirs [x]值,则会导致错误。

2 个答案:

答案 0 :(得分:0)

不确定我是否理解正确。您可以先获得最短的dirs和vars长度,然后分配值。像这样:

import os
path = "C:\BAR_PREK"
dirs = os.listdir(path)
vars = ['VAR0.Value', 'VAR1.Value', 'VAR1.Value', 'VAR3.Value', 'VAR4.Value','VAR5.Value', 'VAR6.Value']

num = min([len(dirs),len(vars)])
for i in range(num):
    vars[i] = dirs[i]

答案 1 :(得分:0)

您可以将exec用于作业

In [116]: vars = ['VAR0.Value', 'VAR1.Value', 'VAR1.Value', 'VAR3.Value', 'VAR4.Value','VAR5.Value', 'VAR6.Value']

In [117]: for idx, var in enumerate(vars):
     ...:     exec("DIR{}='{}'".format(idx, var))
     ...:

In [118]: DIR0
Out[118]: 'VAR0.Value'

In [119]: DIR1
Out[119]: 'VAR1.Value'