Python在循环中获取名称

2024-05-02 13:42:56 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,伙计们,我有多个字符串列表。 F.e.:

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

(数字是示例)

有人能帮忙吗?你知道吗


Tags: 字符串teststringtestsparamsawesomestrstr1
1条回答
网友
1楼 · 发布于 2024-05-02 13:42:56

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

相关问题 更多 >