Julia中的双向字典



我有一些问题,我需要定义从一个变量到另一个变量的一对一映射。我使用的字典是这样的:

mapping = Dict('I'=>1, 'V'=>5, 'X'=>10)

我还想把它映射回去,所以现在我定义了第二个Dict:

inverse_mapping = Dict(1=>'I', 5=>'V', 10=>'X')

有更好的集合吗?比如双向字典或者另一种哈希表?

您可以使用Bijections.jl。下面是一个用法的例子。

首先创建一个空的双射映射IntInt,然后在双射中添加一对:

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

最新更新