Slovníky

Intermediate Julia

Anthony Markham

Quantitative Developer

Slovníky – úvod

  • Kolekce párů klíč–hodnota.
  • Každá hodnota je přístupná pomocí příslušného klíče.
  • Jsou povoleny smíšené datové typy.
Intermediate Julia

Slovníky – proč jsou užitečné?

  • Přístup k hodnotám pomocí klíče je přirozenější
stock = ["AAPL", 131.86, 100000]
println(stock[1])
AAPL
# Dictionary definition
stock = Dict("ticker" => "AAPL", "price" => 131.86)
println(stock["ticker"])
AAPL
Intermediate Julia

Slovníky – bez typů

  • Klíčové slovo Dict pro definici slovníku
  • Klíč => hodnota
  • Páry klíč/hodnota se oddělují čárkou
stock = Dict("ticker" => "AAPL", "price" => 131.86)
Dict{String, Any} with 2 entries:
  "ticker" => "AAPL"
  "price"  => 131.86
  • Datové typy jsou smíšené a nejsou předem definovány.
Intermediate Julia

Slovníky – s typy

  • Typované slovníky vyžadují, aby klíče nebo hodnoty měly určitý datový typ.
stock_typed = Dict{String, Integer}("ticker" => "AAPL", "price" => 131.86)
MethodError: Cannot `convert` an object of type String to an object of type Integer
stock_typed = Dict{String, Any}("ticker" => "AAPL", "age" => 131.86)
Dict{String, Any} with 2 entries:
  "ticker" => "AAPL"
  "age"    => 131.86
Intermediate Julia

Slovníky – iterace

  • Iterace je podobná jako u jiných datových struktur.
stock = Dict("ticker" => "AAPL", "price" => 131.86)
for i in stock
    println(i)
end
Pair{String, Any}("ticker", "AAPL")
Pair{String, Any}("price", 131.86)
Intermediate Julia

Slovníky – iterace přes klíče a hodnoty

  • keys() a values() vrací klíče a hodnoty slovníku.
for i in keys(stock)
    println(i)
end
ticker
price
Intermediate Julia

Slovníky – iterace pomocí rozbalení n-tice

  • Rozbalení n-tice je dalším způsobem iterace přes slovník.
for (ticker, price) in stock
    println(ticker, " ", price)
end
ticker AAPL
price 131.86
Intermediate Julia

Slovníky – get()

  • Funkce get() vrátí hodnotu pro daný klíč.
get(dictionary_name, dictionary_key, default_value)
  • Poslední argument je výchozí hodnota – vrátí se, pokud klíč nebyl nalezen.
stock = Dict("ticker" => "AAPL", "price" => 131.86)
println(get(stock, "ticker", "Key not found."))
AAPL
  • Pokud výchozí hodnotu nezadáme a klíč neexistuje, dojde k chybě.
Intermediate Julia

Slovníky – úpravy

  • Lze přidávat nové klíče, upravovat hodnoty i mazat klíče.
# Add a new key
stock["volume"] = 62128300
println(stock)
Dict{String, Any}("ticker" => "AAPL", "price" => 131.86, "volume" => 62128300)
# Modify an existing value
stock["price"] = 125.27
println(stock)
Dict{String, Any}("ticker" => "AAPL", "price" => 125.27, "volume" => 62128300)
Intermediate Julia

Pojďme si procvičit!

Intermediate Julia

Preparing Video For Download...