python传值问题解决

本文介绍了一种对列表元素进行分组的方法,并应用于疾病分类的评分系统中,通过计算不同疾病类别的分布来为每个类别打分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对list里面的元素分组

def group_by_element(lst):
    '''
    list分组
    '''
    index = []
    result = []
    if len(lst)==1:     如果传进来的list只有一个元素
        result.append(lst)            直接把这个list加到空的result里   
    else:
        for i, _ in enumerate(lst):    list有两个或以上的元素
            if i < len(lst) - 1 and lst[i + 1] != lst[i]:
                index.append(i + 1)
        result.append(lst[:index[0]])
        for i, item in enumerate(index):
            if i < len(index) - 1:
                result.append(lst[index[i]:index[i + 1]])
        result.append(lst[item:])
    return result

方法

		def getNum(list: List[RelativeIndictorListUnit]) -> List[DiseaseDF]:  #返回结果
		    # 定义方法 参数是list  list里面的疾病名称
		    disease = []    
		    for diseaseShowName in list:
		        disease.append(diseaseShowName.names)  把所有的疾病名称加到disease里
		    classList = ["运动", "呼吸", "循环", "消化", "神经", "生殖", "泌尿", "内分泌"]
		    session = Session()
		    nameList = []
		    diseaseDFList = []
		    # print(session.query(DiseaseDB).filter(DiseaseDB.name == "甲状腺囊肿").first().class_1)
		    diseaseList = session.query(DiseaseDB).filter(DiseaseDB.name.in_(disease)).all()  	     	     根据疾病查出所有的数据
		    for disease1 in diseaseList:
		        nameList.append(disease1.class_1)  把所有的查出来的一级分类加到nameList里
		    result = group_by_element(nameList)     把这些一级分类 计数  分组
		    for name in result:
		        diseaseDF = DiseaseDF(**{
		            "class_1": name[0],         一级分类
		            "DF": float('%.2f' % min(0.3 + len(name) / len(list) * 2, 1))   打分
		        })
		        diseaseDFList.append(diseaseDF)  加到 diseaseDFList里
		    wei = set(classList) - set(nameList) 8个一级分类-查询到的一级分类
		    for i in wei:
		        diseaseDF = DiseaseDF(**{
		            "class_1": i,
		            "DF": 0.30           剩下的所有 默认打分是0.3
		        })
		        diseaseDFList.append(diseaseDF)
		    print(diseaseDFList)
		    return diseaseDFList

	        @dataclass
	class DiseaseDF(Structure):
	    """
	    雷达图一级分类打分
	    """
	    class_1 : str = noDefault #一级分类
	    DF: float = noDefault  #打分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值