Swift Language
Los diccionarios
Buscar..
Observaciones
Algunos ejemplos en este tema pueden tener un orden diferente cuando se usan porque el orden del diccionario no está garantizado.
Declarar Diccionarios
Los diccionarios son una colección desordenada de claves y valores. Los valores se relacionan con claves únicas y deben ser del mismo tipo.
Al inicializar un Diccionario, la sintaxis completa es la siguiente:
var books : Dictionary<Int, String> = Dictionary<Int, String>()
Aunque una forma más concisa de inicializar:
var books = [Int: String]()
// or
var books: [Int: String] = [:]
Declare un diccionario con claves y valores especificándolos en una lista separada por comas. Los tipos se pueden inferir de los tipos de claves y valores.
var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
//books = [2: "Book 2", 1: "Book 1"]
var otherBooks = [3: "Book 3", 4: "Book 4"]
//otherBooks = [3: "Book 3", 4: "Book 4"]
Modificar los diccionarios
Añadir una clave y un valor a un diccionario
var books = [Int: String]()
//books = [:]
books[5] = "Book 5"
//books = [5: "Book 5"]
books.updateValue("Book 6", forKey: 5)
//[5: "Book 6"]
updateValue devuelve el valor original si existe o nulo.
let previousValue = books.updateValue("Book 7", forKey: 5)
//books = [5: "Book 7"]
//previousValue = "Book 6"
Eliminar valor y sus claves con sintaxis similar
books[5] = nil
//books [:]
books[6] = "Deleting from Dictionaries"
//books = [6: "Deleting from Dictionaries"]
let removedBook = books.removeValueForKey(6)
//books = [:]
//removedValue = "Deleting from Dictionaries"
Valores de acceso
Se puede acceder a un valor en un Dictionary
usando su clave:
var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
let bookName = books[1]
//bookName = "Book 1"
Los valores de un diccionario se pueden iterar mediante el uso de la propiedad de values
:
for book in books.values {
print("Book Title: \(book)")
}
//output: Book Title: Book 2
//output: Book Title: Book 1
De forma similar, las claves de un diccionario se pueden iterar mediante el uso de su propiedad keys
:
for bookNumbers in books.keys {
print("Book number: \(bookNumber)")
}
// outputs:
// Book number: 1
// Book number: 2
Para obtener todos key
pares de key
y value
correspondientes entre sí (no obtendrá el orden correcto ya que es un Diccionario)
for (book,bookNumbers)in books{
print("\(book) \(bookNumbers)")
}
// outputs:
// 2 Book 2
// 1 Book 1
Tenga en cuenta que un Dictionary
, a diferencia de un Array
, está intrínsecamente desordenado, es decir, no hay garantía sobre el pedido durante la iteración.
Si desea acceder a múltiples niveles de un Diccionario, use una sintaxis de subíndices repetida.
// Create a multilevel dictionary.
var myDictionary: [String:[Int:String]]! = ["Toys":[1:"Car",2:"Truck"],"Interests":[1:"Science",2:"Math"]]
print(myDictionary["Toys"][2]) // Outputs "Truck"
print(myDictionary["Interests"][1]) // Outputs "Science"
Cambiar el valor del diccionario usando la clave
var dict = ["name": "John", "surname": "Doe"]
// Set the element with key: 'name' to 'Jane'
dict["name"] = "Jane"
print(dict)
Obtener todas las claves en el diccionario
let myAllKeys = ["name" : "Kirit" , "surname" : "Modi"]
let allKeys = Array(myAllKeys.keys)
print(allKeys)
Fusionar dos diccionarios
extension Dictionary {
func merge(dict: Dictionary<Key,Value>) -> Dictionary<Key,Value> {
var mutableCopy = self
for (key, value) in dict {
// If both dictionaries have a value for same key, the value of the other dictionary is used.
mutableCopy[key] = value
}
return mutableCopy
}
}