python - 两个单词列表之间的比较
问题描述
我想比较两个列表(结果,真实情况)。如果两者都匹配,则输出应包含 1,如果不是“0”并且输出正敏感。例如:
result= [1,2,3,4,5]
ground-truth=[2,4]
Output= [0,1,0,1,0]
我为此实现了python代码:
def comparedkeground(dke,grd):
correct=np.zeros(len(dke))
try:
for i in range(len(grd)):
a=dke.index(grd[i])
correct[a]=1
except:
'ValueError'
return correct
此代码在某些情况下给出了完美的结果:例如:
d=[1,2,30,4,6, 8, 50, 90, 121]
e=[30, 2, 50, 90]
print(comparedkeground(d,e))
[0. 1. 1. 0. 0. 0. 1. 1. 0.]
cc=['word', 'flags', 'tv', 'nanjo', 'panjo']
ccc=['panjo', 'tv']
print(comparedkeground(cc,ccc))
[0. 0. 1. 0. 1.]
但相同的代码不起作用:
u=['Lyme-disease vaccine', 'United States', 'Lyme disease', 'Allen Steere']
u1= ['drugs', 'Lyme-disease vaccine', 'Lyme disease']
print(comparedkeground(u,u1))
[0. 0. 0. 0.]
解决方案
这是因为u
数组没有'drugs'
值,输出dke.index(grd[i])
会出错!您将try
语句放在错误的位置,您必须像这样更改它:
def comparedkeground(dke,grd):
correct=np.zeros(len(dke))
for i in range(len(grd)):
try:
a=dke.index(grd[i])
correct[a]=1
except:
'ValueError'
return correct
推荐阅读
- edmx - Business Central API 列表扩展/发布者
- java - Android dispatchKeyEvent , onKeyDown 回调不适用于手势音量控制(华为 mate 30 pro)
- reporting-services - 使用报表查看器控件的 SSRS 报表
- ios - WidgetKit 在小部件显示数据之前运行函数
- scala - 如何将 scala 中的数据框保存为 csv ?csv函数不工作
- c# - 通过 gmail api 发送电子邮件时在电子邮件主题中使用撇号创建问题
- typescript - 如何在使用 Typescript 和 TypeORM 的查询中使用可选顺序参数
- python - 内部错误:无法打开所有 CUDA 库
- c# - 如何生成 32 个字符的 SHA1?
- python - 如何将此 JSON 文件作为 DataFrame 读入 python pandas。主要关注“名称”变量。这是类似于我的数据的示例