您的位置:

如何编写去重计数函数

一、什么是去重计数函数

去重计数函数旨在从一堆数据中筛选出不同的值并计算其出现次数。例如,我们有一个包含重复元素的列表[1,2,1,3,2,4,1,3,5,6],去重后剩下[1,2,3,4,5,6],并且他们出现的次数分别为[3,2,2,1,1,1]。

在实际应用中,去重计数函数有很多用途,例如:日志分析、用户统计、网络爬虫等等。

二、如何实现去重计数函数

1. 使用set集合

set集合是一种不允许重复元素的容器。我们可以使用set集合先对数据进行去重,再遍历set集合计算每个元素出现的次数。


def count_unique_num_using_set(nums):
    unique_nums = set(nums)
    for num in unique_nums:
        print("num:", num, "count:", nums.count(num))
    return len(unique_nums)

2. 使用字典计数

针对上述方法的缺陷,我们可以使用字典来记录每个元素的出现次数,而无需遍历整个列表,从而提高效率。


def count_unique_num_using_dict(nums):
    dict_num_count = {}
    for num in nums:
        dict_num_count[num] = dict_num_count.get(num, 0) + 1
    for num, count in dict_num_count.items():
        print("num:", num, "count:", count)
    return len(dict_num_count)

3. 使用Counter计数器

Python的collections模块提供了一个Counter计数器,它用专门的字典来跟踪值的出现次数。


from collections import Counter

def count_unique_num_using_counter(nums):
    cnt = Counter(nums)
    for num, count in cnt.items():
        print("num:", num, "count:", count)
    return len(cnt)

三、去重计数函数的应用案例

1. 统计一段文字中出现次数最多的单词

可以通过去重计数函数和split()方法将一段文字划分为单词,并使用字典或Counter计数器统计每个单词的出现次数。


text = "Hello world, I am a Python programmer. I love Python and I think Python is the best programming language."
words = text.split()
word_count = Counter(words)
print(word_count.most_common(1))

2. 统计网页中每个URL的出现次数

网络爬虫经常需要统计数据,可以通过去重计数函数和正则表达式快速地统计一个网页中每个URL的出现次数。


import re
import requests
from collections import Counter

url = "https://www.python.org"
response = requests.get(url)
content = response.text
urls = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', content)
url_count = Counter(urls)
for url, count in url_count.items():
    print("url:", url, "count:", count)

3. 日志分析

可以通过去重计数函数和正则表达式统计日志中每个IP的出现次数。


import re
import requests
from collections import Counter

log_file_path = "log.txt"
with open(log_file_path, "r") as f:
    content = f.read()
ip_pattern = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
ips = re.findall(ip_pattern, content)
ip_count = Counter(ips)
for ip, count in ip_count.items():
    print("ip:", ip, "count:", count)

四、总结

综上所述,去重计数函数对于各种场景都是必备功能,并且有多种实现方式,可以根据实际情况选择合适的方法。同时,我们还通过应用案例更好地理解并应用了去重计数函数。

如何编写去重计数函数

2023-05-22
python基础学习整理笔记,Python课堂笔记

2022-11-21
印象笔记记录java学习(Java成长笔记)

2022-11-12
java方法整理笔记(java总结)

2022-11-08
重学java笔记,java笔记总结

2022-11-23
java学习笔记(java初学笔记)

2022-11-14
python基础笔记整理(python基础教程总结)

2022-11-12
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
java笔记,尚硅谷java笔记

2022-12-01
mysql数据库完整笔记(mysql数据库数据)

2022-11-13
python课堂整理32(python笔记全)

2022-11-12
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
python笔记第六天,python第六周笔记

2022-11-21
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
关于已前的学习笔记java的信息

2022-11-18
怎么抽取网页整理,怎么抽取网页整理数据

2023-01-08
java客户端学习笔记(java开发笔记)

2022-11-14
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
java基础知识学习笔记一,Java基础笔记

2022-11-21
最新python学习笔记3,python基础笔记

2022-11-17