Python如何实现计数器,使字典每个唯一键对应数值按出现次数自增1
Python实现键出现次数统计的三种方案
原生字典实现(无依赖)
直接用Python内置dict完成统计,不需要导入任何库:
# 待统计的IP列表示例,可替换为你自己的数据源 ip_list = [ "192.168.164.92", "192.168.164.92", "192.168.164.92", "192.168.164.92", "192.168.164.91", "192.168.164.91", "192.168.164.93", "192.168.164.93", "192.168.164.93", "192.168.164.93", "192.168.164.93", "192.168.164.93", "192.168.164.93", "192.168.164.93", "192.168.164.84", "192.168.164.84", "192.168.164.84", "192.168.164.84", "192.168.164.84" ] count = {} for ip in ip_list: count[ip] = count.get(ip, 0) + 1 # 输出结果 for k, v in count.items(): print(f"{k} : {v}")
使用defaultdict简化逻辑
导入collections.defaultdict省去手动设置默认值的步骤:
from collections import defaultdict count = defaultdict(int) for ip in ip_list: count[ip] += 1 # 输出逻辑同上 for k, v in count.items(): print(f"{k} : {v}")
直接用专属计数器Counter
collections.Counter是Python标准库专门为计数场景设计的工具,代码最简洁,还附带高频统计等额外功能:
from collections import Counter count = Counter(ip_list) # 输出逻辑同上 for k, v in count.items(): print(f"{k} : {v}") # 额外功能示例:取出现次数最高的2个IP # print(count.most_common(2))
所有方案的输出结果都和要求的示例完全一致:
192.168.164.92 : 4 192.168.164.91 : 2 192.168.164.93 : 8 192.168.164.84 : 5
内容的提问来源于stack exchange,提问作者Syoto
相关产品推荐
相关产品推荐

