亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將項目列表與字典中的鍵進行匹配?

如何將項目列表與字典中的鍵進行匹配?

慕村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 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號