如何实现适配任意元组向量的元素循环出现次数统计
通用版元素出现次数统计实现
原代码的问题在于硬编码了固定元素的计数变量和判断逻辑,只能处理A、B、C、D这几个元素,完全不具备扩展性。要适配任意元素的元组向量,我们可以用Dict(字典)来动态记录所有元素的出现次数,具体改进后的代码如下:
function count_occurrences(vec) # 初始化空字典,用于存储每个元素的累计出现次数 element_counts = Dict{String, Int}() result = [] for (elem1, elem2) in vec # 更新第一个元素的计数:不存在则初始为0再加1,存在则直接累加 element_counts[elem1] = get(element_counts, elem1, 0) + 1 # 更新第二个元素的计数 element_counts[elem2] = get(element_counts, elem2, 0) + 1 # 将当前元组两个元素的累计计数存入结果向量 push!(result, (element_counts[elem1], element_counts[elem2])) end return result end
代码说明
- 用
Dict替代原代码中硬编码的nb_appear_A等变量,自动适配所有新出现的元素,不需要额外修改代码。 get(element_counts, elem, 0)是Julia中安全获取字典值的方法:如果elem不在字典里,就返回默认值0,避免键不存在的报错。- 遍历每个元组时,先更新两个元素的计数,再直接取出当前计数组成元组存入结果,逻辑简洁通用。
测试示例
比如测试包含新元素的向量:
vec = [("A", "B"), ("A", "C"), ("A", "D"), ("B", "C"), ("R", "E")] count_occurrences(vec)
运行结果:
5-element Vector{Any}: (1, 1) (2, 1) (3, 1) (2, 2) (1, 1)
可以看到,新增的R和E元素被自动统计,完全符合需求。
内容的提问来源于stack exchange,提问作者A. T
相关产品推荐
相关产品推荐

