我有一些问题需要定义从一个变量到另一个变量的一对一映射。我正在使用这样的字典:
mapping = Dict('I'=>1, 'V'=>5, 'X'=>10)
我也想把它映射回来,所以现在我定义了第二个字典:
inverse_mapping = Dict(1=>'I', 5=>'V', 10=>'X')
那里有更好的收藏吗?像双向字典或另一种哈希表之类的东西?
我有一些问题需要定义从一个变量到另一个变量的一对一映射。我正在使用这样的字典:
mapping = Dict('I'=>1, 'V'=>5, 'X'=>10)
我也想把它映射回来,所以现在我定义了第二个字典:
inverse_mapping = Dict(1=>'I', 5=>'V', 10=>'X')
那里有更好的收藏吗?像双向字典或另一种哈希表之类的东西?
您可以使用Bijections.jl。这是一个用法示例。
Int
首先创建一个到的空双射映射Int
,然后向双射添加一对:
using Bijections.jl
b = Bijection{Int,Int}()
b[1] = 101
b[2] = 102
要查找与键关联的值,请使用普通的字典索引语法:
julia> b[1]
101
要查找与值关联的键,请使用函数调用语法(注意括号而不是方括号):
julia> b(101)
1
双射也可以像字典一样被迭代:
julia> [k + v for (k, v) in b]
2-element Vector{Int64}:
104
102
最后,您可以看到Bijection
不允许添加会破坏双射映射的对:
julia> b[3] = 101
ERROR: One of x or y already in this Bijection