为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2023-05-05 14:24:15
这看起来很简单,但我不知道出了什么问题。首先,我收集了目录中所有文件名的列表,这些文件名与特定字符串相匹配:import osimport globdl = 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"又一遍。
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

fn应该是一个列表,否则它将是一个字符串和字典部分,你将循环通过单个文件名而不是目录中与模式匹配的所有文件名


import os

import glob

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

fn = []

for f in dl:

    fn.append(os.path.basename(f))

或使用列表理解


fn = [os.path.basename(f) for f in dl]


查看完整回答
反对 回复 2023-05-05
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

在你的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))


查看完整回答
反对 回复 2023-05-05
  • 2 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信