2017-10-15 28 views
1

好的,請原諒我的問題,它可能沒有以最好的方式問!確定字符串列表中的子串集合

我在字典中有一組56個條目。這些鍵表示由字典中的字符串表示的功能組合。我根據特性將字符串字典細分爲集合,並將這些值放入列表中。我的代碼工作到這一點。

我現在有困難瞭解如何將列表中的每個字符串相互比較以找出最大共享字符串是什麼。所以,我的名單看起來像:

[ngali,ngali,ngalina,ngalina,ngina,ngina,nginana]

所以 'NG' 是我在這種情況下,後是。到目前爲止,我只能找到參考找到像Levinshtein和fuzz之類的字符串距離。

是否有任何'整潔'的方式來編碼這個或我註定要編寫嵌套循環嵌套循環,以通過所有可能的組合?

我使用Python 3

+0

它看起來像你實現最長公共子串的(它似乎前與子)的變化。也許這將是有用的? https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Longest_common_substring#Python_3 – Raizuri

+1

所以我早先通讀了這篇文章,如果我錯了,請糾正我的錯誤,但是如果代碼片段從最開始的時候纔會找到最長的公共子字符串這個詞的開頭,在我看來,它可能在這個詞的任何地方。我猜我將不得不創建另一個循環,以考慮滑動起點...... – Ant

回答

-1
from os.path import commonprefix 
l = ['ngali','ngali','ngalina','ngalina','ngina','ngina','nginana'] 
commonprefix(l) 
+0

我不只是尋找共同的前綴,我需要能夠找到最長的常見字符串,無論它在這個詞中的位置。在另一組中,我將不得不看看['ngalina','nginana']這樣的詞,並找到'na',而在其他情況下,該字符串將位於該詞的中心。 – Ant

+0

@你想要的'ng';至少有禮貌不要downvote – skrubber

+0

我沒有downvote,我不知道誰downvoted。至少我不認爲我做過,我是新手,所以如果我做了,我表示歉意。 – Ant

相關問題