Menu
Coddy logo textTech

Declaración de diccionarios

Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 12 de 56.

Un diccionario es una colección desordenada de pares clave/valor. Tanto el tipo de clave como el tipo de valor son fijos cuando lo creas.

var prices: [String: Int] = [
    "apple": 1,
    "bread": 3,
    "milk":  4
]
print(prices.count)            // 3
print(prices.isEmpty)          // false

La anotación de tipo [String: Int] se lee como "las claves son String, los valores son Int". Swift generalmente puede inferirlo a partir del literal, pero escribirlo hace que los inicializadores vacíos sean inequívocos:

var counts: [String: Int] = [:]
// vs. un array vacío, que también necesitaría un tipo

Leer una clave que existe devuelve el valor. Leer una clave que no existe devuelve nil; la siguiente lección cubre esa parte.

challenge icon

Desafío

Fácil

Lee tres líneas de entrada: un nombre, un país y una edad entera. Construye un único diccionario llamado person con claves String y los valores que leíste (la edad se mantiene como un Int, necesitarás un tipo de valor heterogéneo, consulta la sugerencia).

Imprime tres líneas:

  1. El número de entradas en el diccionario
  2. name=<value> usando acceso por subíndice
  3. country=<value> usando acceso por subíndice

Usa la forma imprimible: cuando leas el valor del diccionario como un Any, realiza un force-unwrap antes de imprimir.

Para la entrada Alice / UK / 30, la salida es:

3
name=Alice
country=UK

Hoja de referencia

Un diccionario almacena pares clave/valor con tipos de clave y valor fijos:

var prices: [String: Int] = [
    "apple": 1,
    "bread": 3,
    "milk":  4
]
print(prices.count)   // 3
print(prices.isEmpty) // false

Crea un diccionario vacío con anotación de tipo explícita:

var counts: [String: Int] = [:]

Usa [String: Any] para tipos de valores heterogéneos (tipos mixtos):

var person: [String: Any] = [
    "name": "Alice",
    "age": 30
]

Pruébalo tú mismo

let name = readLine()!
let country = readLine()!
let age = Int(readLine()!)!

// TODO: construir un [String: Any] llamado person, imprimir count, name, country
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo