دیکشنری (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
این مبحث بخشی از دوره آموزش کامل جولیا است.