如何使用字符串访问变量?

时间:2019-07-09 13:37:10

标签: python

我在访问带有两个条件的多个列表时遇到问题:Case_NumCase_Type。我不知道如何解决串联字符串和列表对象的错误。

我尝试使用循环并组合字符串和常规整数值。不幸的是,我不断遇到相同的错误。任何帮助将不胜感激

_2019_case_1=[]

_2019_case_2=[]

_2019_case_3=[]


Case_Num=[2019,2019,2019,2020,2020,2020,2024,2024,2024,2029,2029,2029]
Case_Type=[1,2,3,1,2,3,1,2,3,1,2,3]

dr = "F:\C\FE\CD\Tran\ctg"
read_files =[] 
for root, _, files in os.walk(dr):
    read_files_2="_"+Case_Num+"_case_"+Case_Type 
    for file in files:
        if file in read_files_2:
            read_files.append(os.path.join(root, file))

Error I receive

read_files_2="_"+Case_Num+"_case_"+Case_Type
TypeError: cannot concatenate 'str' and 'list' objects

1 个答案:

答案 0 :(得分:2)

您需要将assign read_files_2所在的行更改为已设置的理解。最好只执行一次,以便在循环之前分配它。如评论中所述,您也可以使用itertools.product来轻松扩展更改。

from itertools import product

_2019_case_1=[]

_2019_case_2=[]

_2019_case_3=[]

dr = "F:\C\FE\CD\Tran\ctg"
read_files =[] 
read_files_2= {f"_{num}_case_{type}" for num, type in product((2019,2020,2024,2029), (1,2,3))}
for root, _, files in os.walk(dr): 
    for file in files:
        if file in read_files_2:
            read_files.append(os.path.join(root, file))