P2. Sort() Summary

本文提供了一种方法来统计文本中出现次数最少的字符,并按照它们首次出现的次序进行排序。此外,还介绍了如何实现二次排序以确保结果的准确性。

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

1.Example

Python Challenge 2

统计文本中出现最少的字符,出现次数相同的按照出现的次序排列,并将结果输出.

2.Code

1) 把字符作为字典的关键字,将出现的位置以及出现次数存为一个序列,作为关键字的值。以下是按照字典第二个单元的第二个值排序。

其中dic.items()返回字典的一个单元。x : x[1][1] 表示第二个单元的第二个值。reverse 表示是否需要倒序。


输出结果因为没有考虑到在次数相同时的出现次序,结果不够准确。

2)先按照第二个单元的第二个值排,第二个值相等的按照第一个值排。



达到要求。

3)另外二次排序介绍。该函数功能为先按照字典的第一个元素排序,再按照第二个元素排。



using System; using System.Text; using System.Windows.Forms; using Script.Methods; using System.Collections.Generic; using System.Linq; public partial class UserScript:ScriptMethods,IProcessMethods { int PointXNum; int PointYNum; float [] PointX_input = new float[32]; float [] PointY_input = new float[32]; struct Point //坐标结构体 { public float X; public float Y; } UserScript.Point p = new UserScript.Point(); List<Point> OriginPointList = new List<Point>(); List<Point> SortedPointList = new List<Point>(); List<Point> YSortedPointList = new List<Point>(); List<Point> RowPointList = new List<Point>(); /// <summary> /// Initialize the field's value when compiling /// 预编译时变量初始化 /// </summary> public void Init() { //变量初始化,其余变量可在该函数中添加 } /// <summary> /// Enter the process function when running code once /// 流程执行一次进入Process函数 /// </summary> /// <returns></returns> public bool Process() { //每次执行将进入该函数,此处添加所需的逻辑流程处理 OriginPointList.Clear(); SortedPointList.Clear(); YSortedPointList.Clear(); RowPointList.Clear(); GetFloatArrayValue("in0", ref PointX_input, out PointXNum); GetFloatArrayValue("in1", ref PointY_input, out PointYNum); if (PointXNum != 0 && PointXNum == PointYNum) { for (int i = 0; i < PointXNum; i++) { p.X = PointX_input[i]; p.Y = PointY_input[i]; OriginPointList.Add(p); } } //YSortedPointList = OriginPointList.OrderBy(o => o.Y).ToList(); OriginPointList.Sort(delegate(Point p1,Point p2) //对Y升序排列 { return p1.Y.CompareTo(p2.Y); }); foreach(Point point in OriginPointList)
03-22
# 优先级名称映射 priority_name_map = { 'other_priority': '其它优先级', 'NONE': '无优先级', 'summary': '总计' } # 初始化结果列表 b = [] # 确定测试类型的处理顺序 test_types_order = sorted( {test_type for project in a.values() for test_type in project}, key=lambda x: (not x.startswith('security_'), x) ) # 动态获取项目顺序 projects_order = list(a.keys()) # 用于跟踪已处理的测试类型 handled_test_types = set() for test_type in test_types_order: # 每个测试类型维护独立的已处理项目集合 handled_projects = set() # 标记当前测试类型名称是否已显示 test_type_printed = False for project in projects_order: if project not in a or test_type not in a[project]: continue test_data = a[project][test_type] # 检查项目是否在当前测试类型中已处理过 project_handled = project in handled_projects # 收集优先级项:P1, P2, P3, 其他 priorities = [p for p in ['P1', 'P2', 'P3'] if p in test_data] others = [k for k in test_data if k not in priorities + ['summary']] group_rows = [] # 标记当前项目的名称是否已显示 project_printed = False for key in priorities + others: data = test_data[key] priority_name = priority_name_map.get(key, key) # 处理测试类型列:仅在当前测试类型的首行显示 current_test_type = test_type if (not test_type_printed and not group_rows) else '' if current_test_type: test_type_printed = True # 标记测试类型已显示 # 处理项目列:仅在当前项目的首行显示 current_project = project if (not project_handled and not project_printed and not group_rows) else '' if current_project: project_printed = True # 标记项目名称已显示 # 生成行数据 row = [ '*', current_test_type, current_project, priority_name, data['total_api'], data['run_api'], data['total_case'], data['run_case'] ] group_rows.append(row) # 处理总计行:测试类型和项目名称均置空 summary = test_data['summary'] summary_row = [ '*', '', '', '总计', summary['total_api'], summary['run_api'], summary['total_case'], summary['run_case'] ] group_rows.append(summary_row) b.extend(group_rows) # 标记当前项目为已处理(针对当前测试类型) handled_projects.add(project) # 标记当前测试类型为已处理 handled_test_types.add(test_type) test_types_order的值只有security_over_permit、security_sql_inject、function这三种,按照这个顺序读取, # 确定测试类型的处理顺序 test_types_order = sorted( {test_type for project in a.values() for test_type in project}, key=lambda x: (not x.startswith('security_'), x) )该部分代码换个写法
03-22
以下代码是在R语言中利用nls函数对胸径生长量进行拟合的代码,先不想采用随机抽样法划分建模与检验数据,而是使用十折交叉验证去测试拟合的精度,并获得拟合模型的AIC/BIC和十折交叉的RMSEcv、R2cv、和MAEcv值作为评价指标,请写出完整代码。data <- read.csv("E:/data/Dbaihua.csv",header = T) set.seed(123) # 设置种子值,保证随机抽样可重复性 rows <- nrow(data) # 计算数据的行数 ns <- sample(1:rows,round(0.75*rows)) # ns为抽出的作为建模数据的行号 ns <- sort(ns) # 将ns按从小到大排序 model.data <- data[ns,] # 建模数据,占总数据的75% test.data <- data[-ns,] #### 拟合 t-D #### # Schumacher 方程 n1 <- nls(D~A*exp(-b/t), data = model.data, start = c(A=33,b=24)) #Mitscherlich n2 <- nls(D~a*(1-b*exp(-c*t)), data = model.data, start = c(a=40,b=0.1,c=0.05)) #Logistic方程 n3 <- nls(D~A/(1+m*exp(-r*t)), data = model.data, start = c(A=20,m=20,r=0.1)) #Gompertz 方程 n4 <- nls(D~A*exp((-b)*exp(-r*t)), data = model.data, start = c(A=20,b=5,r=0.05)) # 考尔夫 n5 <- nls(D~a*exp(-b*t^(-c)), data = model.data, start = c(a=108,b=11,c=0.5)) #理查德(Richards)方程 n6 <- nls(D~A*(1-exp(-r*t))^c, data = model.data, start = c(A=25,r=0.05,c=1)) # 计算拟合指标 决定系数(R2) 1-sum(resid(n1)^2)/sum((model.data[,"D"]-mean(model.data[,"D"]))^2) 1-sum(resid(n2)^2)/sum((model.data[,"D"]-mean(model.data[,"D"]))^2) 1-sum(resid(n3)^2)/sum((model.data[,"D"]-mean(model.data[,"D"]))^2) 1-sum(resid(n4)^2)/sum((model.data[,"D"]-mean(model.data[,"D"]))^2) 1-sum(resid(n5)^2)/sum((model.data[,"D"]-mean(model.data[,"D"]))^2) 1-sum(resid(n6)^2)/sum((model.data[,"D"]-mean(model.data[,"D"]))^2) # 计算拟合指标均方根误差(RMSE) sqrt(sum(resid(n1)^2)/(length(model.data[,"D"])-length(coef(n1)))) sqrt(sum(resid(n2)^2)/(length(model.data[,"D"])-length(coef(n2)))) sqrt(sum(resid(n3)^2)/(length(model.data[,"D"])-length(coef(n3)))) sqrt(sum(resid(n4)^2)/(length(model.data[,"D"])-length(coef(n4)))) sqrt(sum(resid(n5)^2)/(length(model.data[,"D"])-length(coef(n5)))) sqrt(sum(resid(n6)^2)/(length(model.data[,"D"])-length(coef(n6)))) # 计算拟合指标均方误差(MSE) (sum(resid(n1)^2)/(length(model.data[,"D"])-length(coef(n1)))) (sum(resid(n2)^2)/(length(model.data[,"D"])-length(coef(n2)))) (sum(resid(n3)^2)/(length(model.data[,"D"])-length(coef(n3)))) (sum(resid(n4)^2)/(length(model.data[,"D"])-length(coef(n4)))) (sum(resid(n5)^2)/(length(model.data[,"D"])-length(coef(n5)))) (sum(resid(n6)^2)/(length(model.data[,"D"])-length(coef(n6)))) # 计算AIC AIC(n1,n2,n3,n4,n5,n6) BIC(n1,n2,n3,n4,n5,n6) p1=predict(n1,test.data) e1=test.data$D-p1 (MARE = mean(abs(e1/test.data$D))) (MAE = mean(abs(e1))) p2=predict(n2,test.data) e2=test.data$D-p2 (MARE = mean(abs(e2/test.data$D))) (MAE = mean(abs(e2))) p3=predict(n3,test.data) e3=test.data$D-p3 (MARE = mean(abs(e3/test.data$D))) (MAE = mean(abs(e3))) p4=predict(n4,test.data) e4=test.data$D-p4 (MARE = mean(abs(e4/test.data$D))) (MAE = mean(abs(e4))) p5=predict(n5,test.data) e5=test.data$D-p5 (MARE = mean(abs(e5/test.data$D))) (MAE = mean(abs(e5))) p6=predict(n6,test.data) e6=test.data$D-p6 (MARE = mean(abs(e6/test.data$D))) (MAE = mean(abs(e6))) summary(n1) summary(n2) summary(n3) summary(n4) summary(n5) summary(n6)
最新发布
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值