开发者社区> 问答> 正文

检查列表中的多个值

我有1个带有文件名的列表和1个带有过滤词的嵌套列表。筛选器列表具有3个列表,每个列表具有不同的子列表长度。

如何迭代列表并使用该and函数?它需要检查列表因为差的所有值['employer', 'finance']和['employer', 'adress']。

filter = [

['employer','finance'],
['manifest'],
['epmloyer','adress','home']

]

file_list = [

'01012017_employer_finance.txt',
'25102017_cargo_manifest.txt',
'12022018_epmloyer_home_adress.txt',
]

"""search for financial file"""
if filter0 in file_list[0] and filter0 in file_list[0]:

print('Financial file found')

"""search for cargo manifest"""
if filter1 in file_list[1]:

print('Cargo manifest found')

"""search for adress file"""
if filter2 in file_list[2] and filter2 in file_list[2] and filter2 in file_list[2]:

print('Financial file found')

到目前为止,我设法得到下面的代码。但是我如何处理不同长度的列表呢?和变量的使用例如:filterx代替filter1

"""loop through the file_list"""
for file in file_list:

print("Identify file:", file)

#identify file in list with lists in it

if filter[0][0] in file and filter[0][1] in file:
    print('***Financial file found')

展开
收起
一码平川MACHEL 2019-01-22 16:56:27 1592 0
1 条回答
写回答
取消 提交回答
  • 该all函数可用于根据文件名检查过滤器的元素:

    def matches(filter, filename):

    return all(x in filename for x in filter)

    要查找与给定过滤器匹配的文件,您将遍历文件列表并应用于match每个项目:

    def get_filename(filter, files):

    for f in files:
        if matches(filter, f)
            return f

    这可以使用以下next功能以更短的方式表达:

    def get_filename(filter, files):

    return next((f for f in files if matches(filter, f)), None)

    next使用第二个参数调用会使其返回,None而不是在没有匹配文件时引发错误。

    现在您可以检查所有文件。我建议更进一步,使用字典标记过滤器:

    filters = {

    'finance': ['employer','finance'],
    'manifest': ['manifest'],
    'address': ['epmloyer', 'adress', 'home'],

    }

    for label, filter in filters.items():

    file = get_filename(filter, files)
    if file:
        print(f'Found {label} file: {file}')

    您可以更进一步,创建您找到的文件的字典:

    found_files = {label: get_filename(filter, files) for label, filter in filters.items()}

    2019-07-17 23:26:21
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载