julia如何把字典与向量取交集?

a是一个3个元素的向量,想让他与index这个字典中的value值取交集,返回一个新的3元素字典,应该怎么弄呢?有现成函数么?小白一个
image

Dict( i => index[i] for i in a)

我的a中的7,4,1是value值,不是key值,我按照前辈的代码做了一下发现不是很对,麻烦前辈能再看一下么

重复元素如何处理?

index = Dict(1=>2, 2=>2, 3=>2)

我没看懂您的意思

index = Dict(1=>2, 2=>2, 3=>2, 4=>3)
a = [2]

应该返回什么呢?

我没考虑过您这个,您是说这个东西有重复values不能实现么?我那个没有重复values可以实现么?

我觉得你这有可能是 XY问题, 我不知道下面的代码能否正常运行.

Dict( x=> y for (x,y) in index if  y in a)
1 个赞

肯定是可以再优化的,但反正能用,另外这里 a 最好提前转换成 Set 才能拿到比较高的 v in a 的效率。


julia> index = Dict(5=>2, 4=>4, 6=>5, 7=>6, 2=>3, 3=>1, 1=>7);

julia> a = [7, 1, 4]
3-element Vector{Int64}:
 7
 1
 4

julia> Dict(k=>v for (k,v) in index if v in a)
Dict{Int64, Int64} with 3 entries:
  4 => 4
  3 => 1
  1 => 7

啊原来楼上已经写了

感谢各位大佬真心感谢