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 中的字典。