本文目录导读:

这是您需要的重复项统计脚本,它使用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
功能特点
- 双重输入方式:支持命令行参数和标准输入
- 清晰的结果展示:显示总数据量、重复项数量、每个元素的出现次数和重复次数
- 智能排序:结果按出现次数降序排列
- 空值处理:自动过滤空字符串
- 代码简洁易扩展:核心逻辑仅依赖Python标准库
您可以根据需要修改count_duplicates函数来调整统计逻辑(例如保留大小写差异、处理数字等)。