Julia 字典
最后修改于 2023 年 10 月 25 日
在本文中,我们将在 Julia 中使用字典。
字典是键/值对的集合。字典使用 Dict 类型创建。
字典也称为映射或关联数组。
简单示例
在第一个示例中,我们在 Julia 中构建了一个简单的字典。
d = Dict("sk" => "Slovakia", "ru" => "Russia",
"de" => "Germany", "no" => "Norway")
println(d)
println(d["sk"])
println(d["no"])
创建了一个包含几个国家的字典。值是国家名称,键是国家的缩写。
d = Dict("sk" => "Slovakia", "ru" => "Russia",
"de" => "Germany", "no" => "Norway")
字典使用 Dict 类型创建。每个条目都有一个键和一个值;它们用 => 字符分隔。条目之间用逗号分隔。
println(d)
我们打印整个字典。
println(d["sk"]) println(d["no"])
我们打印了两个国家的名字。国家通过它们的键进行访问。键在方括号内指定。
$ julia main.jl
Dict("ru" => "Russia", "sk" => "Slovakia", "no" => "Norway", "de" => "Germany")
Slovakia
Norway
遍历字典
在下一个示例中,我们将使用 for 循环遍历字典。
d = Dict(:a => "book", :b => "storm", :c => "pencil", :d => "green")
for (k, v) in d
println("$(k): $(v)")
end
我们定义了一个单词字典。键是符号,值是单词。我们使用 for 循环遍历字典。
for (k, v) in d
println("$(k): $(v)")
end
在每个循环中,当前条目的键和值分别存储在 k 和 v 变量中。然后将它们打印到控制台。
$ julia main.jl a: book b: storm d: green c: pencil
keys 和 values 函数
我们可以使用 keys 和 values 函数来获取字典的所有键和值。
d = Dict(:a => "book", :b => "storm",
:c => "pencil", :d => "green")
println(keys(d))
println(values(d))
for e in keys(d)
println(e)
end
for e in values(d)
println(e)
end
该程序使用了 keys 和 values 函数。
d = Dict(:a => "book", :b => "storm",
:c => "pencil", :d => "green")
我们定义了一个单词字典。
println(keys(d))
我们获取了字典的所有键。该函数返回一个数组。
$ julia main.jl [:a, :b, :d, :c] ["e-books", "storm", "green", "pencil"] a b d c book storm green pencil
类型
下一个示例处理类型。
d = Dict{Symbol, String}(:a => "book", :b => "storm",
:c => "pencil", :d => "green")
println(keytype(d))
println(valtype(d))
我们显式定义了字典的键/值类型,并使用 keytype 和 valtype 函数在运行时确定键和值的类型。
d = Dict{Symbol, String}(:a => "book", :b => "storm",
:c => "pencil", :d => "green")
我们可以在 {} 方括号内显式指定键和值的类型。
$ julia main.jl Symbol String
合并字典
merge 函数可用于合并字典。
d1 = Dict(:a => "book", :b => "storm", :c => "pencil") d2 = Dict(:d => "water", :e => "form", :f => "lamp") d = merge(d1, d2) println(d)
在示例中,我们使用 merge 合并了两个单词字典。
$ julia main.jl
Dict(:a => "book", :b => "storm", :f => "lamp", :d => "water",
:e => "form", :c => "pencil")
haskey 函数
使用 haskey 函数,我们可以确定字典是否包含给定的键。
d = Dict(:a => "book", :b => "storm",
:c => "pencil", :d => "green")
if haskey(d, :c)
println("the dictionary contains the :c key")
else
println("the dictionary does not contain the :c key")
end
程序检查字典是否包含 :c 键。
in 运算符
我们可以使用 in 运算符检查一个条目是否在字典中。
d = Dict(:a => "book", :b => "storm",
:c => "pencil", :d => "green")
p = Pair(:a, "book")
if p in d
println("the $(p) is in the dictionary")
else
println("the item is not in the dictionary")
end
程序确定定义的字典是否包含 Pair(:a, "book")。
我们还可以使用 ∈ 和 ∉ 运算符。(键入时使用 \in 和 \notin)。
d = Dict(:a => "book", :b => "storm",
:c => "pencil", :d => "green")
p1 = Pair(:a, "book")
if p1 ∈ d
println("the $(p1) is in the dictionary")
else
println("the item is not in the dictionary")
end
p2 = Pair(:e, "war")
if p2 ∉ d
println("the $(p2) is not in the dictionary")
else
println("the item is in the dictionary")
end
程序使用了 ∈ 和 ∉ 运算符。
get 和 get! 函数
get 函数返回给定键存储的值,如果不存在该键的映射,则返回给定的默认值。get! 函数返回给定键存储的值,如果不存在该键的映射,则存储给定的默认键值对并返回它。
d = Dict(:a => "book", :b => "storm", :c => "pencil",
:d => "car", :e => "book")
println(get(d, :a, "not present"))
println(d)
println(get(d, :f, "not present"))
println(d)
println(get!(d, :f, "cloud"))
println(d)
在程序中,我们使用了 get 和 get! 函数。
$ julia getfuns.jl book Dict(:a => "book", :b => "storm", :d => "car", :e => "book", :c => "pencil") not present Dict(:a => "book", :b => "storm", :d => "car", :e => "book", :c => "pencil") cloud Dict(:a => "book", :b => "storm", :f => "cloud", :d => "car", :e => "book", :c => "pencil")
添加元素
在下一个示例中,我们将新条目添加到字典中。
d = Dict(:a => "book", :b => "storm", :c => "pencil", :d => "green") println(d) push!(d, :e => "cloud") d[:x] = "sea" println(d)
在程序中,我们添加了两个条目。
push!(d, :e => "cloud")
在第一种情况下,我们使用了 push! 函数。
d[:x] = "sea"
另一种方法是使用赋值运算符。
$ julia main.jl Dict(:a => "book", :b => "storm", :d => "green", :c => "pencil") Dict(:a => "book", :b => "storm", :d => "green", :e => "cloud", :c => "pencil", :x => "sea")
删除元素
我们可以使用 delete! 和 pop! 删除元素。
d = Dict(:a => "book", :b => "storm", :c => "pencil",
:d => "car", :e => "book")
delete!(d, :a)
println(d)
r = pop!(d)
println(r)
println(d)
在程序中,我们删除了两个元素。
delete!(d, :a)
我们删除了键为 :a 的条目。
r = pop!(d)
pop! 删除字典中的一个条目并返回它。如果集合是有序容器,则返回最后一个条目;对于无序容器,则返回一个任意的元素。
$ julia main.jl Dict(:b => "storm", :d => "car", :e => "book", :c => "pencil") :b => "storm" Dict(:d => "car", :e => "book", :c => "pencil")
来源
在本文中,我们使用 Julia 中的字典。