2

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

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

我也想把它映射回来,所以现在我定义了第二个字典:

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

那里有更好的收藏吗?像双向字典或另一种哈希表之类的东西?

4

1 回答 1

2

您可以使用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
于 2021-09-24T13:54:47.550 回答