首页 > 解决方案 > 如何使用字符串访问变量?

问题描述

我在使用两个条件访问多个列表时遇到问题: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

标签: python

解决方案


您需要将您所在的行更改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))

推荐阅读