2

こんにちは、文字列を含む複数のリストがあります。鉄:

params = {
   "str1":"A Teststring which tests.",
   "str2":"Strings are awesome to test",
   "str3":"Teststring is a string that tests ",
   "str4":"String awesome test tests"
   }


erg =[]
allstrings = ['str1','str2','str3','str4']
userkeywords = ['teststring','awesome','test','string']
for str in allstrings:
    strkeywords = params[str].split()
    common = list(set(userkeywords) & set(strkeywords) )
    howmuch = len(common)
    erg.append(howmuch)
print erg

このコードを使用すると、params 文字列内の単語がどれだけ同じかがわかります。しかし、userkeywords と共通する単語が最も多い文字列を出力するにはどうすればよいでしょうか。

期待:

str1 : 4
str2: 3
str4: 3

(数字は一例です)

誰でも助けることができますか?

4

1 に答える 1

0

に別のデータ構造を使用します。ergつまり、dict

erg = {}
allstrings = ['str1','str2','str3','str4']
userkeywords = set(['teststring','awesome','test','string'])
for strs in allstrings:
    strkeywords = params[strs].split()
    #len() works on sets too, no need to convert this to a list
    common = len( userkeywords & set(strkeywords) )
    erg[str] = common

for k in sorted(erg, key=erg.get, reverse=True):
    print k, ':', erg[k]

出力:

str2 : 2
str4 : 2
str3 : 1
str1 : 0
于 2013-11-01T14:36:50.537 に答える