我在访问带有两个条件的多个列表时遇到问题:Case_Num
和Case_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
答案 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))