找出出现频率最高的IP地址并统计它出现的次数
Posted
技术标签:
【中文标题】找出出现频率最高的IP地址并统计它出现的次数【英文标题】:Find IP address which occurs most frequent and count the number of times that it appears 【发布时间】:2021-12-27 03:01:22 【问题描述】:大家好 第一次不得不寻求帮助,但我现在有点困难。我从 8 月开始学习 python,我一直在挑战要在 11 月底完成,我希望能帮助我的代码正常工作。我的任务需要找到一个最频繁出现的 ip 地址并计算它出现的次数,而且这个信息必须显示给用户,我一直在提供 4 个具有 ips 的文件 .txt。我还需要使用非平凡的数据结构并内置 python 排序和/或搜索功能,在程序中使用函数、参数传递和返回值。以下是他们推荐我使用的示例数据结构:-
`enter code here`
def analyse_logs(parameter):
# Your Code Hear
return something
def extract_ip(parameter):
# Your Code Hear
return something
def find_most_frequent(parameter):
# Your Code Hear
return something
# Test Program
def main():
# Your Code Hear
# Call Test Program
main()
下面是我想出的,代码与提供的示例完全不同,但我所做的并没有直接给我输出,而是创建了一个新的文本文件,该文件已排序但现在是什么我正在寻找:-
enter code here
def sorting(filename):
infile = open(filename)
ip_addr = []
for line in infile:
temp = line.split()
for i in temp:
ip_addr.append(i)
infile.close()
ip_addr.sort()
outfile = open("result.txt", "w")
for i in ip_addr:
outfile.writelines(i)
outfile.writelines(" ")
outfile.close()
sorting("sample_log_1.txt")e here
我创建的代码已对 .txt 文件中的所有内容进行了排序,并输出了一直使用到最不常用的最频繁使用的内容。我所寻找的只是一种可以对 .txt 文件进行排序的算法,找到更频繁的 IP 地址,然后打印出该 ip 以及它出现的次数。我希望我已经提供了一切,我相信这可能是非常基本的东西,但我就是无法理解它。
【问题讨论】:
请修正缩进。并删除所有enter code here
占位符。
看看collections.Counter()
感谢 Barmar,但不确定我是否应该使用 collections.counter
我认为“我还需要使用非平凡的数据结构并内置 python 排序和/或搜索功能”允许这样做
来自示例结构,前提是他们希望我们使用 3 个函数 def analyse_logs()、def extract_ip () 和 def find_most_frequent() 并打印结果
【参考方案1】:
您应该在变量中保留 IP 地址的重复次数。你可以使用字典。
ip_count_dict = "IP1": repeat_count, "IP2": repeat_count
当你第一次在你的列表中找到一个 IP 时,设置 repeat_count 1,然后如果你再次找到相同的 ip,只需增加计数器。
例如,
ip_count_dict =
ip_list = ['1.1.1.1','1.1.1.2','1.1.1.3','1.1.1.1']
#Loop and count ips
#Final version of ip_count_dict '1.1.1.1':2 , '1.1.1.2':1, '1.1.1.3':1
使用这本字典,您可以存储所有 ip 并按其值排序。
P.S.:字典保留键值对,在完成所有计数后,您可以搜索“按值排序字典”。
【讨论】:
感谢您的帮助,让这一切变得更加清晰,只需要找到如何将它们放在一起以上是关于找出出现频率最高的IP地址并统计它出现的次数的主要内容,如果未能解决你的问题,请参考以下文章
统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数