两个列表的Python比较

优素福

我正在从事NLP项目。我已从“简历”中提取了关键字并将其存储在列表中。另一个列表包含我从JSON中提取的所有技术关键字。这两个列表都包含许多关键字,下面仅作参考。

list_of_keys=['azure', 'job', 'matlab', 'javascript', 'http', 'android', 'amazon', 'apache spark']

result=['apache http server', 'angularjs', 'azure bot service', 'amazon s3', 'android sdk', 'android studio', 'amazon cloudfront']

码:

with open('rawtext.json','r', encoding='utf-8') as f:
    data = json.load(f)
result = [x["name"].replace("@", " ").lower() for x in data]
print(result)

print ("List of Matched Keywords are:\n")
# Comparing Lists

for item in list_of_keys: 
    for item1 in result: 
        if item == item1: 
            print("Word from Resume: ", item, ", Word from JSON data: ", item1)
print ("****************\n")

电流输出

简历中的单词:框,JSON数据中的单词:框简历中的单词:arduino,JSON数据中的单词:arduino简历中的单词:arduino,JSON数据中的单词:arduino简历中的单词:浏览器,JSON数据中的单词:浏览器Word中的单词简历:黑色,JSON数据中的单词:黑色简历:地址中的单词,JSON数据中的单词:地址简历:地址中的单词,JSON数据中的单词:地址

我通过比较仅匹配精确单词的两个列表并打印它们,尝试了一种非常简单的方法。但是,我想要的是两个列表中是否有匹配项,例如,如果“ apache spark”与结果列表“ apache http server”匹配,则它应作为输出打印:简历中的单词:apache spark,JSON数据中的Word: apache http服务器。同样,如果匹配了亚马逊,则应将其打印为输出:简历中的单词:亚马逊,JSON数据中的单词:亚马逊s3,亚马逊云

要求的输出:

简历中的单词:apache spark,JSON数据中的单词:apache http服务器简历中的单词:amazon,JSON数据中的单词:amazon s3,amazon cloudfront简历中的单词:http,JSON数据中的单词:apache http服务器

有人可以帮我吗。谢谢。

比塔那

我认为您要实现的目标与简单的相等性检查有所不同,'azure' == 'azure bot service'即将始终返回False

比较检查可能更复杂,但是从您的预期行为来看,我相信您正在寻找以下内容:

from collections import defaultdict

res_dict = defaultdict(list)
for item in list_of_keys: 
    for item1 in result: 
        if item in item1:
            res_dict[item].append(item1)

for k,v in res_dict.items():
    print("Word from Resume: ", k, ", Word from JSON data: ", ",".join(v))
print ("****************\n")

我已经用=check替换了check in,这意味着如果azure在内部进行比较,则比较将返回true,azure bot service但对于结果数组中的所有其他字符串,则返回false。

我还建议查看Python是否具有字符串“包含”子字符串方法?进行更复杂的子字符串匹配,因为您可能想检查单词list_of_keysresults数组之间是否同时出现单词

另外,您也可以查看模糊搜索,因为它看起来非常接近您的预期行为https://pypi.org/project/fuzzysearch/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章