Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Diccionarios

20/33
Recursos

Aportes 15

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Diferencias entre tuplas y diccionarios:

  • Las tuplas pueden o no tener una llave.

  • Las tuplas solo pueden contener una cantidad predefinida de valores

  • Las tuplas pueden combinar varios tipos de valores, mientras que los diccionarios tiene un solo tipo homogéneo.

Tupla:

 let tuple: (key1: String, key2: Float, key3: Int) = (key1: "value 1", key2: 3.1415, key3: 64)

Diccionario:

 let dictionary: [String: String] = ["key 1": "value 1", "key 2": "value 2"]

https://stackoverflow.com/questions/27631137/tuple-vs-dictionary-differences```

https://stackoverflow.com/questions/27631137/tuple-vs-dictionary-differences

Resumen

Los diccionarios se forman utilizando el par de clave/valor (key/value).

Cómo definir un diccionario vacío:

var namesOfIntegers = [Int: String]() // Diccionario vacio

Crear un nuevo par key/value:

namesOfIntegers[15] = "quince"

Para vaciar un diccionario utilizamos [:]:

namesOfIntegers = [:]

Mas ejemplos:

var airports: [String: String] = ["YYZ": "Toronto",
                                   "DUB": "Dublin",
                                   "PMI": "Palma de Mallorca"]

airports.count
airports.isEmpty

Existen varias formas de reescribir el valor de una clave existente

Asignando un nuevo valor a la clave:

airports["LHR"] = "London City Airport"
airports
airports["LHR"] = "London Heathrow"
airports

Utilizando el método .updateValue(). Este método devuelve el valor anterior antes de actualizarlo:

if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
    print("El aeropuerto tenia antiguamente el nombre de \(oldValue)")
}

Comprobar si existe una clave en el diccionario

airports

if let airportName = airports["DUB"] {
    print("El aeropuerto de DUB es: \(airportName)")
}

Como eliminar un elemento del diccionario

Hay 2 formas:

  • Asignándole el valor nil:
airports["PMI"] = nil
airports
  • Utilizando el método removeValue():
if let removedAirport = airports.removeValue(forKey: "DUB") {
    print("Aeropuerto eliminado: \(removedAirport)")
}
var myFamily : [String : UInt8] = [:]
myFamily["Luis"] = 40
myFamily["Reyna"] = 37
myFamily["Rocio"] = 10
myFamily["Rodrigo"] = 3
myFamily.count
// Reto
var familyMembers: [String: Int] = ["Carolina": 34, "Aisha": 12, "Thomas": 8, "Martina": 3]

familyMembers["Frances"] = 21

familyMembers

var calificación: [String:Double] = ["Juan":10.0, "Marcos":8.3, "Diana":9.0, "Daniel":3.5, "Roberto":5.7]
calificación ["Gerardo"] = 4.8

for (key, value) in calificación{ 
    if value < 6{
        print(key)
    }
}```
// Diccionarios:
// formas de inicializar diccionarios:
var nameOfIntegers = [Int:String]()
nameOfIntegers[15] = "quince"

//vaciar diccionario:
nameOfIntegers = [:]

var airports: [String: String] = ["TKY":"Tokyo", "LIM":"Lima", "NYK":"New York"]

airports.count

airports.isEmpty
// sobreescribir en un diccionario:
airports["LHR"] = "London City Airport"
airports
airports["LHR"] = "London Airport"
airports

// recuperar valor antes de borrarlo y sobrescribir al mismo tiempo:
var oldValue = airports.updateValue("Tokyo Airport", forKey: "TKY")
airports

//ELiminar aeropuertos:
airports["LHR"] = nil
airports.removeValue(forKey: "LIM")

Ejercicio 👍🏻

var familyMembers: [String: UInt8] = [
    "Maria": 47,
    "Victor":53,
    "Daniela":25,
    "Pepe":6]

familyMembers.count
familyMembers["Andrea"] = 28
familyMembers
//reto
var familyDictionary: [String: Int] = ["Antonella": 32 ,"Jorge": 49 ,"Celia": 55]
familyDictionary.count
var familyDictionary = [String: Int] ()
familyDictionary["José Miguel"] = 29
familyDictionary["Paulina"] = 27
familyDictionary["Nathalie Quetzalli"] = 8
familyDictionary["Ana Paula"] = 0

// Reto
// create a dictionary with name as key and age like value.

var familyNameDic: [String: Int] = ["Felipe": 28,
                                     "Isabel": 56,
                                     "Enrique": 57,
                                     "Nataly": 32,
                                     "Fernanda": 18
]
print("cantidad de familia: \(familyNameDic.count)")
let ageUser = familyNameDic["Felipe"] ?? 0
print(ageUser)
// declare empty Dictionary
var familyNameDicTwo: [String: Int8] = [:]

familyNameDicTwo["Felipe"] =  28
familyNameDicTwo["Isabel"] = 56
familyNameDicTwo["Enrique"] = 57
familyNameDicTwo["Nataly"] = 32
familyNameDicTwo["Fernanda"] = 18

print("cantidad de familia: \(familyNameDicTwo.count)")

En un diccionario, se accede por clave y este tendrá un valor…

No cumple las características de un conjunto…

[k1:v1, k2:v2, …]

No respeta el orden. Solamente los arrays cumple la orden e indexación.
Tampoco no se puede repetir las claves y valores.

var family : [String : Int] = ["Samuel": 60, "Blanca": 59, "Diana": 35, "Jimmy": 33, "Paul": 24]
    family["Sara"] = 14
    family["Mariana"] = 7
    
    for f in family {
        print(f)
    }```