Skip to content

Dictionaries in Nuru

Dictionaries in Nuru, also known as "kamusi," are powerful and flexible data structures that store key-value pairs. This page provides a comprehensive overview of dictionaries in Nuru, including how to create, access, modify, and iterate over them.

Creating Dictionaries

Dictionaries are enclosed in curly braces {} and consist of keys and values separated by colons. Here's an example of defining a dictionary:

go

orodha = {"jina": "Juma", "umri": 25}

orodha = {"jina": "Juma", "umri": 25}

Keys can be strings, integers, floats, or booleans, while values can be any data type, including strings, integers, floats, booleans, null, or functions:

go
k = {
    "jina": "Juma",
    "umri": 25,
    kweli: "kweli",
    "salimu": unda(x) { andika("habari", x) },
    "sina value": tupu
}
k = {
    "jina": "Juma",
    "umri": 25,
    kweli: "kweli",
    "salimu": unda(x) { andika("habari", x) },
    "sina value": tupu
}

Accessing Elements

Access individual elements in a dictionary using their keys:

go

andika(k[kweli]) // kweli
andika(k["salimu"]("Juma")) // habari Juma

andika(k[kweli]) // kweli
andika(k["salimu"]("Juma")) // habari Juma

Updating Elements

Update the value of an element by assigning a new value to its key:

go
k['umri'] = 30
andika(k['umri']) // 30
k['umri'] = 30
andika(k['umri']) // 30

Adding New Elements

Add a new key-value pair to a dictionary by assigning a value to a non-existent key:

go
k["lugha"] = "Kiswahili"
andika(k["lugha"]) // Kiswahili
k["lugha"] = "Kiswahili"
andika(k["lugha"]) // Kiswahili

Concatenating Dictionaries

Combine two dictionaries using the + operator:

go
matunda = {"a": "apple", "b": "banana"}
mboga = {"c": "carrot", "d": "daikon"}
vyakula = matunda + mboga
andika(vyakula) // {"a": "apple", "b": "banana", "c": "carrot", "d": "daikon"}
matunda = {"a": "apple", "b": "banana"}
mboga = {"c": "carrot", "d": "daikon"}
vyakula = matunda + mboga
andika(vyakula) // {"a": "apple", "b": "banana", "c": "carrot", "d": "daikon"}

Checking If a Key Exists in a Dictionary

Use the ktk keyword to check if a key exists in a dictionary:

go

"umri" ktk k // kweli
"urefu" ktk k // sikweli

"umri" ktk k // kweli
"urefu" ktk k // sikweli

Looping Over a Dictionary

Loop over a dictionary to access its keys and values:

go

hobby = {"a": "asili", "b": "baiskeli", "c": "chakula"}
kwa i, v ktk hobby {
    andika(i, "=>", v)
}

hobby = {"a": "asili", "b": "baiskeli", "c": "chakula"}
kwa i, v ktk hobby {
    andika(i, "=>", v)
}

Output

go
a => asili
b => baiskeli
c => chakula
a => asili
b => baiskeli
c => chakula

Loop over just the values:

go
kwa v ktk hobby {
    andika(v)
}
kwa v ktk hobby {
    andika(v)
}

Output

go
asili
baiskeli
chakula
asili
baiskeli
chakula

With this knowledge, you can now effectively use dictionaries in Nuru to store and manage key-value pairs, offering a flexible way to organize and access data in your programs.

All code is open source if you can read Assembly