Diccionarios

Un diccionario, al igual que un array, es una estructura de datos disponible en la librería estándar de Swift y sirve para almacenar información de manera ordenada.

La gran diferencia entre un diccionario y un array es que a la información del diccionario se accede usando llaves en vez de índices, y el orden de los datos que contiene un diccionario no es relevante.

// Se declara un diccionario que contiene las calificaciones
// de algunos alumnos del salón de clases
let schoolGrades: [String : Double] = [
	"Oscar": 10,
	"Marco": 9,
	"Mariana": 9.5
]

// Obtenemos la calificación de Mariana a través de la llave relevante
let marianasGrade = schoolGrades["Mariana"] // #=> 9.5

El diccionario declarado en el ejemplo anterior se dice que tiene un tipo de dato [String : Double], porque sus llaves (del lado izquierdo) son String y todos los valores (del lado derecho) son Double.

Un diccionario, al igual que un array, es una estructura de dato homogénea. Esto significa que el compilador de Swift no permitirá la compilación de un código que intente asignar una llave o valor de tipo diferente al que el diccionario acepta en su declaración, ya sea explícita o inferida.

Otra diferencia entre un array y un diccionario, es que, mientras que en el caso de un array, si se intenta acceder a un índice mayor al número de elementos que contiene el array se producirá un error de memoria, intentar recuperar un valor asociado con una llave que no existe en un diccionario regresará nil.

let nonExistentGrade = schoolGrades["Fernando"]

type(of: nonExistentGrade) // #=> Optional<Double>

Utilizando la sintaxis anterior para recuperar un valor asociado con una llave en un diccionario, siempre se obtendrá un opcional de ese valor. Aprende sobre opcionales aquí.

Para poder modificar un diccionario después de haber sido creado, es necesario que la declaración del mismo indique que es una varible, no una constante:

var schoolGrades = [
	"Oscar": 10,
	"Marco": 9,
	"Mariana": 9.5
]

schoolGrades["Patricio"] = 10 	// Agregar un nuevo valor 10 en la llave "Patricio"
schoolGrades["Oscar"] = nil 	// Eliminar el valor asociado con la llave "Oscar"

print(schoolGrades) // #=> ["Marco": 9, "Mariana": 9.5, "Patricio": 10]

Relacionados