怎样实现重复项统计脚本

wen 实用脚本 23

本文目录导读:

怎样实现重复项统计脚本

  1. 使用方法
  2. 示例输出
  3. 功能特点

这是您需要的重复项统计脚本,它使用Python编写,可以灵活统计文本列表或文件中各元素的出现次数,并筛选出重复项。

#!/usr/bin/env python3
"""
重复项统计脚本
功能:统计列表或文件中的重复元素及其出现次数
支持:从命令行参数或标准输入读取数据
"""
import sys
from collections import Counter
from typing import List, Tuple
def count_duplicates(items: List[str]) -> List[Tuple[str, int]]:
    """
    统计列表中的重复项及其出现次数
    参数:
        items: 字符串列表
    返回:
        按出现次数降序排列的(元素, 次数)元组列表(仅包含重复项)
    """
    if not items:
        return []
    counter = Counter(items)
    # 筛选出现次数大于1的项,并按次数降序排列
    duplicates = [(item, count) for item, count in counter.items() if count > 1]
    duplicates.sort(key=lambda x: x[1], reverse=True)
    return duplicates
def print_results(duplicates: List[Tuple[str, int]], total_items: int):
    """格式化输出统计结果"""
    print(f"\n{'='*50}")
    print(f"总数据量: {total_items} 个元素")
    print(f"重复项数量: {len(duplicates)} 个")
    print(f"{'='*50}\n")
    if not duplicates:
        print("🎉 没有发现重复项!")
        return
    print(f"{'元素':<30} {'出现次数':<15} {'重复次数':<15}")
    print("-" * 60)
    for item, count in duplicates:
        repeat_count = count - 1  # 重复次数 = 总次数 - 1
        print(f"{item:<30} {count:<15} {repeat_count:<15}")
def main():
    # 从命令行参数或标准输入获取数据
    if len(sys.argv) > 1:
        # 从命令行参数读取(每个参数视为一个元素)
        items = sys.argv[1:]
        source = "命令行参数"
    else:
        # 从标准输入读取(每行一个元素)
        print("请输入数据(每行一个元素,输入空行结束):")
        items = []
        try:
            while True:
                line = sys.stdin.readline()
                if not line or line.strip() == '':
                    break
                items.append(line.strip())
        except KeyboardInterrupt:
            print("\n输入中断")
            return
        if not items:
            print("未输入任何数据")
            return
        source = "标准输入"
    # 去除完全空白的元素(保留空字符串需特殊处理)
    items = [item for item in items if item]  # 移除空字符串
    if not items:
        print("没有有效数据可供统计")
        return
    print(f"数据来源: {source}")
    print(f"共读取 {len(items)} 个元素")
    # 统计重复项
    duplicates = count_duplicates(items)
    # 输出结果
    print_results(duplicates, len(items))
if __name__ == "__main__":
    main()

使用方法

命令行参数

python duplicates_counter.py apple banana apple orange banana apple

标准输入

python duplicates_counter.py
# 然后逐行输入数据,最后按两次回车结束
apple
banana
apple
orange
banana
apple

管道输入

echo -e "apple\nbanana\napple\norange" | python duplicates_counter.py

示例输出

数据来源: 命令行参数
共读取 6 个元素
==================================================
总数据量: 6 个元素
重复项数量: 2 个
==================================================
元素                           出现次数         重复次数
------------------------------------------------------------
apple                          3               2
banana                         2               1

功能特点

  1. 双重输入方式:支持命令行参数和标准输入
  2. 清晰的结果展示:显示总数据量、重复项数量、每个元素的出现次数和重复次数
  3. 智能排序:结果按出现次数降序排列
  4. 空值处理:自动过滤空字符串
  5. 代码简洁易扩展:核心逻辑仅依赖Python标准库

您可以根据需要修改count_duplicates函数来调整统计逻辑(例如保留大小写差异、处理数字等)。

抱歉,评论功能暂时关闭!