我有一些问题,我需要定义从一个变量到另一个变量的一对一映射。我使用的字典是这样的:
mapping = Dict('I'=>1, 'V'=>5, 'X'=>10)
我还想把它映射回去,所以现在我定义了第二个Dict:
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