دیکشنری (Dict) در جولیا

ذخیره کلید-مقدار با Dict، دسترسی، بررسی وجود و پیمایش

Dict چیست؟

دیکشنری (Dict) داده را به‌صورت کلید-مقدار ذخیره می‌کند — مثل دفترچه تلفن:

# تعریف با =>
person = Dict(
    "name" => "علی",
    "age" => 25,
    "city" => "تهران",
)

# دسترسی با کلید
println(person["name"])   # علی
println(person["age"])    # 25

افزودن و تغییر

person = Dict("name" => "علی")

# افزودن
person["age"] = 25
person["city"] = "تهران"

# تغییر
person["age"] = 26

println(person)

حذف

person = Dict("a" => 1, "b" => 2, "c" => 3)

delete!(person, "b")
println(person)

دسترسی امن — get

اگر کلیدی وجود نداشته باشد، person["key"] خطا می‌دهد! برای دسترسی امن:
person = Dict("name" => "علی")

# get با مقدار پیش‌فرض
println(get(person, "name", "نامشخص"))    # علی
println(get(person, "email", "ندارد"))    # ندارد (بدون خطا!)

بررسی وجود کلید

person = Dict("name" => "علی", "age" => 25)

println(haskey(person, "name"))   # true
println(haskey(person, "email"))  # false

# با in
println("age" in keys(person))    # true

پیمایش Dict

scores = Dict("علی" => 18, "مریم" => 20, "رضا" => 16)

# کلید-مقدار
for (name, score) in scores
    println("$name: $score")
end

# فقط کلیدها
for key in keys(scores)
    println(key)
end

# فقط مقادیر
for value in values(scores)
    println(value)
end

عملیات پرکاربرد

scores = Dict("علی" => 18, "مریم" => 20, "رضا" => 16)

println(length(scores))   # تعداد

# کلیدها و مقادیر به‌صورت آرایه
println(collect(keys(scores)))
println(collect(values(scores)))

# merge — ادغام
defaults = Dict("theme" => "light", "lang" => "fa")
user = Dict("theme" => "dark")

settings = merge(defaults, user)
println(settings)   # theme=dark (کاربر برنده!), lang=fa

Dict با انواع مختلف

# کلید عددی
counts = Dict(1 => "یک", 2 => "دو")

# کلید Symbol (سریع‌تر!)
config = Dict(:host => "localhost", :port => 8080)
println(config[:host])

# مقدار آرایه
groups = Dict("fruit" => ["سیب", "موز"], "veg" => ["هویج"])
println(groups["fruit"])
کلیدهای Symbol (با :) سبک‌تر و سریع‌تر از String هستند — برای کلیدهای ثابت از Symbol استفاده کنید!

مثال عملی: شمارش کلمات

text = "سلام دنیا سلام جولیا سلام برنامه‌نویسی"

counts = Dict{String,Int}()
for word in split(text)
    counts[word] = get(counts, word, 0) + 1
end

for (word, count) in counts
    println("$word: $count بار")
end

این مبحث بخشی از دوره آموزش کامل جولیا است.

ابزارهای مرتبط