纯Python实现类SQL逻辑:获取斜杠次数次最大值对应标签的技术咨询
纯Python实现类SQL分组筛选需求(无Pandas)
嘿,作为Python新手,不用Pandas完全能搞定这个需求!我给你写一段纯Python代码,每一步都加了注释,保证你能看懂~
需求回顾
咱们要实现两个核心步骤:
- 统计列表中每个子项第二列里字符
/的最大出现次数 - 找出第二列中
/出现次数比这个最大值少1的所有子项的第一列(标签)
完整代码示例
先拿和你给出结构一致的示例数据来演示,代码逻辑适配任何同结构的列表:
# 示例数据,和你提供的['MYDATA_FILE_XT', '/MYDATA/FILE/XT/...']结构对齐 sample_data = [ ['LABEL_A', '/MYDATA/FILE/XT/'], ['LABEL_B', '/MYDATA/FILE/XT/TEST/'], ['LABEL_C', '/MYDATA/FILE/'], ['LABEL_D', '/MYDATA/FILE/XT/TEST/DEMO/'], ['LABEL_E', '/MYDATA/FILE/XT/TEST/'] ] # 步骤1:计算所有第二列的'/'出现次数,再取最大值 # 用列表推导式快速遍历每个子项,统计第二列的'/'数量 slash_counts = [item[1].count('/') for item in sample_data] max_slash_count = max(slash_counts) # 步骤2:筛选符合条件的标签 # 再次遍历列表,找到第二列'/'次数等于「最大值减1」的子项,提取第一列的标签 target_labels = [item[0] for item in sample_data if item[1].count('/') == max_slash_count - 1] # 输出结果验证 print("最大'/'出现次数:", max_slash_count) print("符合条件的标签:", target_labels)
代码细节解释
- 步骤1:用列表推导式遍历所有子项,调用字符串原生的
count('/')方法统计每个第二列的斜杠数量,再用max()函数直接拿到最大值,简单高效。 - 步骤2:还是用列表推导式,这次加了判断条件:只有当子项第二列的斜杠次数等于「最大值减1」时,才把它的第一列标签加入结果列表。
运行结果示例
针对上面的测试数据,运行后会输出:
最大'/'出现次数: 5 符合条件的标签: ['LABEL_B', 'LABEL_E']
(因为LABEL_D的第二列有5个/,是最大值;LABEL_B和LABEL_E的第二列有4个/,正好比最大值少1)
如果你的实际数据结构和示例一致,直接把sample_data换成你的真实数据就行啦~
内容的提问来源于stack exchange,提问作者SimpleOne
相关产品推荐
相关产品推荐

