You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia 如何删除字典中各向量存储的跨键重复元素

Julia实现字典内跨向量重复值删除

实现逻辑

  • 先统计字典中所有向量包含的元素的全局出现次数
  • 提取出现次数大于1的元素作为待过滤集合
  • 遍历字典每个键对应的向量,过滤掉属于待过滤集合的元素

无额外依赖实现代码

# 定义原始字典
x = Dict{AbstractString,Array{Integer,1}}("A" => [1,2,3], "B" => [3,4,5], "C" => [5,6,7])

# 统计所有元素出现频次
all_vals = reduce(vcat, values(x))
count_dict = Dict{Integer, Int}()
for val in all_vals
    count_dict[val] = get(count_dict, val, 0) + 1
end

# 生成待删除元素集合
duplicate_vals = Set{Integer}(k for (k, v) in count_dict if v > 1)

# 生成结果字典
res = Dict{AbstractString, Vector{Integer}}()
for (key, vec) in x
    res[key] = filter(num -> !(num in duplicate_vals), vec)
end

运行验证结果

执行后输出res即可得到预期结果:

Dict{AbstractString, Vector{Integer}} with 3 entries:
  "A" => [1, 2]
  "B" => [4]
  "C" => [6, 7]

简洁写法(依赖StatsBase库)

如果允许引入第三方库,可以用StatsBase.countmap简化计数逻辑:

using StatsBase

x = Dict{AbstractString,Array{Integer,1}}("A" => [1,2,3], "B" => [3,4,5], "C" => [5,6,7])
duplicate_vals = Set(k for (k, v) in countmap(reduce(vcat, values(x))) if v > 1)
res = Dict(key => filter(!in(duplicate_vals), vec) for (key, vec) in x)

内容的提问来源于stack exchange,提问作者AfterFray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:54:04