首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两种列表的Python比较

两种列表的Python比较
EN

Stack Overflow用户
提问于 2021-01-04 00:38:08
回答 2查看 80关注 0票数 0

我在做NLP项目。我已经从简历中提取了关键字并将它们存储在列表中。另一个列表由我从JSON中提取的所有技术关键字组成。这两个列表包括许多关键字和以下只是供参考。

代码语言:javascript
复制
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']

代码:

代码语言:javascript
复制
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 Word,来自JSON的数据: browser,来自JSON的数据:浏览器的单词:黑色,来自JSON的数据:黑色的单词,来自JSON的数据:地址,来自JSON的数据的单词: address Word : address,Word来自JSON的数据: address

我已经尝试了上面一种非常简单的技术,通过比较两个列表,这些列表只匹配准确的单词并打印出来。但是,我想要的是,如果两个列表中有任何匹配,例如,如果‘’与结果列表'apache server‘匹配,那么它应该作为输出打印出来: Word来自简历:,Word来自JSON数据: apache服务器。类似地,如果amazon匹配,那么它应该打印为输出: Word从简历: amazon,Word从JSON数据: amazon s3,

必需的输出:

来自简历的单词:,从简历中获得的单词: s3,来自JSON数据的单词:

有人能帮帮我吗。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-04 00:46:27

我认为您试图实现的目标与简单的等式检查略有不同,即'azure' == 'azure bot service'将始终返回False

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

代码语言:javascript
复制
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")

我已经将=检查替换为in检查,这意味着如果azure发生在azure bot service中,则比较将返回true,但对于结果数组中的所有其他字符串,将返回false。

我还建议查看Does Python have a string 'contains' substring method?,寻找更复杂的子字符串匹配,因为您可能希望检查list_of_keysresults数组之间是否存在单词共存。

或者,您也可以查看模糊搜索,因为它似乎非常接近您的预期行为https://pypi.org/project/fuzzysearch/

票数 0
EN

Stack Overflow用户

发布于 2021-01-04 00:43:24

不妨试试这个:

代码语言:javascript
复制
common = list(set(list_of_keys) & set(result))

例如:

代码语言:javascript
复制
list_of_keys = ['one','two','three','some more']
result = ['two','some more']

common = list(set(list_of_keys) & set(result))

print (common)

输出:

代码语言:javascript
复制
['two', 'some more']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65556409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档