在对照的匹配时有多个条件如何快速判断与哪个人匹配

在对照的匹配时有多个条件如何快速判断与哪个人匹配。我现在有个数据库,要判断100人与这个库哪个人匹配的上,年龄上下三岁,性别一致,接种疫苗时间上下相差14天,

什么数据库?数据库有多少数据?
如果是mysql
年龄就 abs 差即可, 日期 用 DATEDIFF 就可以知道天数

你的需求换个角度讲就是现在有一个列表,里边包含了若干人的信息,主要有姓名、性别、年龄、接种疫苗时间等属性,另外又有一个包含100个人信息的列表,然后需要从已有的表中找到与新表中每个人符合判定条件的人的列表,按这个思路,我写了个例子:

#注意,这里边时间差部分需要自定义一个函数去计算,当前例子里时间也用整数来表示,实际应该是datetime类型,并需要专门的函数去实现时间差
from random import randint
#你的数据库,1000个人的信息
users = [{'name':'name'+str(i),'age':randint(1,100),'sex':randint(0,1),'time':randint(0,100)} for i in range(1000,2000)]
# 新表,100个人的信息
ps = [{'name':'name'+str(i),'age':randint(1,100),'sex':randint(0,1),'time':randint(0,100)} for i in range(100)]
#遍历新表,并查询数据库表匹配信息,并打印匹配人名列表
for p in ps:
    p_u = [user['name'] for user in users if abs(user['age']-p['age'])<=3 and user['sex']==p['sex'] and abs(user['time']-p['time'])<=14]
    print(f'与{p["name"]}匹配的人有{p_u}')

img


如有帮助,请采纳!