如何将项目列表与字典中的键进行匹配?

这看起来很简单,但我不知道出了什么问题。


首先,我收集了目录中所有文件名的列表,这些文件名与特定字符串相匹配:


import os

import glob

dl = glob.glob('dir/*abc*')

for f in dl:

    fn = os.path.basename(f)

所以现在我有一个文件名列表fn,其中包含"abc". 到目前为止一切都很好。


我想要做的是遍历这个文件名列表,尝试将它们与字典中的一组键进行匹配,并在有匹配项的地方打印出该匹配键的相应字典值。


这是我所做的:


fn_dict = {"abc.txt": "val1", "abc123.txt": "val2", "def.txt": "val3"}

for i in fn:

    if i in fn_dict.keys():

        print(fn_dict.get(i))

    else:

        print("No match")

我希望能回来"val1","val2"但我只是一遍"No match"又一遍。


慕村225694
浏览 84回答 2
2回答

BIG阳

fn应该是一个列表,否则它将是一个字符串和字典部分,你将循环通过单个文件名而不是目录中与模式匹配的所有文件名import osimport globdl = glob.glob('dir/*abc*')fn = []for f in dl:    fn.append(os.path.basename(f))或使用列表理解fn = [os.path.basename(f) for f in dl]

繁星点点滴滴

在你的for循环中你重新分配你的fn变量for f in dl:    fn = os.path.basename(f) # fn is string now, not a list然后在你的第二个for循环中你遍历fn变量,它是一个字符串,所以创建一个数组并添加os.path.basename(i)到其中fn = []for f in dl:    fn.append(os.path.basename(f))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python