[問題] 使用fuzzywuzzy比對兩個不同長度的物件

看板Python作者 (米蟲)時間8年前 (2015/09/08 16:56), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
各位版友好: 小弟剛學python不久,有個問題向各位請教 我現在想以fuzzywuzzy套件比對兩個物件內所有地址的相似度,但是這兩個物件的長度 不同,如下code所述: ---- obj1=["信義區一段一號","台北市信義段20號"] obj2=["台北市信義區一段一號","台北市信義段20號","台北市信義一路二段","台北市信 義區"] fuz2=fuzz.ratio(obj1,obj2) print fuz2 ---- 上述code只能傳回一個值,就我的理解應該是obj1的所有字串跟obj2的所有字串相比之 simiarity,但是我想要做的是,把obj1內的每個物件都跟obj2的每個物件比對, 並且傳回每個與之相比的simiarity,以下是我想呈現的樣貌: ======================================================================= obj1 obj2 similarity(以下為自己假設的數值) 信義區一段一號 台北市信義區一段一號 0.8 信義區一段一號 台北市信義段20號 0.6 信義區一段一號 台北市信義一路二段 0.4 信義區一段一號 台北市信義區 0.3 台北市信義段20號 台北市信義區一段一號 0.5 台北市信義段20號 台北市信義段20號 1 台北市信義段20號 台北市信義一路二段 0.4 台北市信義段20號 台北市信義區 0.3 ======================================================================= 懇請版上各路先進指點,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.27.199 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1441702586.A.225.html

09/08 17:46, , 1F
for s,t in itertools.product( obj1, obj2 ):
09/08 17:46, 1F

09/08 17:46, , 2F
print(fuzz.ratio(obj1[s],obj2[t]) )
09/08 17:46, 2F

09/08 17:49, , 3F
不過如果連 nested loop 都寫不出來 基本功該多練練 ...
09/08 17:49, 3F

09/08 22:08, , 4F
感謝指點,我再試試看
09/08 22:08, 4F

09/08 22:42, , 5F
啊啊 我把你的obj看成dict了
09/08 22:42, 5F

09/08 22:42, , 6F
應該是 print(s,t,fuzz.ratio(s,t) )
09/08 22:42, 6F
文章代碼(AID): #1LxgAw8b (Python)