Swift - Dizionari

Swift 4 dictionariesvengono utilizzati per memorizzare elenchi non ordinati di valori dello stesso tipo. Swift 4 mette un controllo rigoroso che non ti consente di inserire un tipo sbagliato in un dizionario anche per sbaglio.

I dizionari di Swift 4 utilizzano un identificatore univoco noto come file keyper memorizzare un valore che in seguito può essere referenziato e cercato tramite la stessa chiave. A differenza degli elementi in un array, gli elementi in un filedictionarynon hai un ordine specificato. Puoi usare un filedictionary quando è necessario cercare i valori in base ai loro identificatori.

Una chiave del dizionario può essere un numero intero o una stringa senza limitazioni, ma dovrebbe essere univoca all'interno di un dizionario.

Se assegni un dizionario creato a una variabile, è sempre modificabile, il che significa che puoi modificarlo aggiungendo, rimuovendo o cambiando i suoi elementi. Ma se assegni un dizionario a una costante, quel dizionario è immutabile e la sua dimensione e il suo contenuto non possono essere modificati.

Creazione del dizionario

Puoi creare un dizionario vuoto di un certo tipo usando la seguente sintassi dell'inizializzatore:

var someDict = [KeyType: ValueType]()

È possibile utilizzare la seguente semplice sintassi per creare un dizionario vuoto la cui chiave sarà di tipo Int ei valori associati saranno stringhe:

var someDict = [Int: String]()

Ecco un esempio per creare un dizionario da un insieme di valori dati:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

Inizializzazione basata su sequenza

Swift 4 ti consente di creare un dizionario da array (coppie chiave-valore).

var cities = [“Delhi”,”Bangalore”,”Hyderabad”]

È possibile utilizzare la seguente semplice sintassi per creare un dizionario vuoto la cui chiave sarà di tipo Int ei valori associati saranno stringhe:

var Distance = [2000,10, 620]

Ecco un esempio per creare un dizionario da un insieme di valori dati:

let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, Distance))

Le righe di codice sopra creeranno un dizionario con Città come chiave e Distanza come Valore -

Filtraggio

Swift 4 ti consente di filtrare i valori da un dizionario.

var closeCities = cityDistanceDict.filter { $0.value < 1000 }

Se eseguiamo il codice sopra, il nostro dizionario closeCities sarà.

["Bangalore" : 10 , "Hyderabad" : 620]

Dizionario raggruppamento

Swift 4 ti consente di creare raggruppamenti di valori del dizionario.

var cities = ["Delhi","Bangalore","Hyderabad","Dehradun","Bihar"]

È possibile utilizzare la seguente semplice sintassi per raggruppare i valori del dizionario in base al primo alfabeto.

var GroupedCities = Dictionary(grouping: cities ) { $0.first! }

Il risultato del codice precedente sarà

["D" :["Delhi","Dehradun"], "B" : ["Bengaluru","Bihar"], "H" : ["Hyderabad"]]

Accesso ai dizionari

È possibile recuperare un valore da un dizionario utilizzando la sintassi del pedice, passando la chiave del valore che si desidera recuperare tra parentesi quadre immediatamente dopo il nome del dizionario come segue:

var someVar = someDict[key]

Controlliamo il seguente esempio per creare, inizializzare e accedere ai valori da un dizionario:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someVar = someDict[1]

print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Value of key = 1 is Optional("One")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Modifica dei dizionari

Puoi usare updateValue(forKey:)metodo per aggiungere un valore esistente a una determinata chiave del dizionario. Questo metodo restituisce un valore facoltativo del tipo di valore del dizionario. Ecco un semplice esempio:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("New value of one", forKey: 1)
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

È possibile modificare un elemento esistente di un dizionario assegnando un nuovo valore a una determinata chiave come mostrato nell'esempio seguente:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict[1]
someDict[1] = "New value of one"
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Rimuovi coppie chiave-valore

Puoi usare removeValueForKey()metodo per rimuovere una coppia chiave-valore da un dizionario. Questo metodo rimuove la coppia chiave-valore se esiste e restituisce il valore rimosso oppure restituisce zero se non esisteva alcun valore. Ecco un semplice esempio:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var removedValue = someDict.removeValue(forKey: 2)

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

È inoltre possibile utilizzare la sintassi pedice per rimuovere una coppia chiave-valore da un dizionario assegnando un valore di nilper quella chiave. Ecco un semplice esempio:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

someDict[2] = nil

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

Iterazione su un dizionario

Puoi usare un file for-in loop per iterare sull'intero set di coppie chiave-valore in un dizionario, come mostrato nell'esempio seguente:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (index, keyValue) in someDict.enumerated() {
   print("Dictionary key \(index) - Dictionary value \(keyValue)")
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Dictionary key 2 - Dictionary value Two
Dictionary key 3 - Dictionary value Three
Dictionary key 1 - Dictionary value One

Puoi usare enumerate() funzione che restituisce l'indice dell'elemento insieme alla sua coppia (chiave, valore) come mostrato di seguito nell'esempio -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
   print("Dictionary key \(key) - Dictionary value \(value)")
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Dictionary key 0 - Dictionary value (key: 2, value: "Two")
Dictionary key 1 - Dictionary value (key: 3, value: "Three")
Dictionary key 2 - Dictionary value (key: 1, value: "One")

Converti in array

Puoi estrarre un elenco di coppie chiave-valore da un dato dizionario per creare array separati sia per le chiavi che per i valori. Ecco un esempio:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)

print("Print Dictionary Keys")

for (key) in dictKeys {
   print("\(key)")
}
print("Print Dictionary Values")

for (value) in dictValues {
   print("\(value)")
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Print Dictionary Keys
2
3
1
Print Dictionary Values
Two
Three
One

La proprietà del conteggio

Puoi usare il file di sola lettura count proprietà di un dizionario per scoprire il numero di elementi in un dizionario come mostrato di seguito -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]

print("Total items in someDict1 = \(someDict1.count)")
print("Total items in someDict2 = \(someDict2.count)")

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Total items in someDict1 = 3
Total items in someDict2 = 2

La proprietà vuota

Puoi usare la sola lettura empty proprietà di un dizionario per scoprire se un dizionario è vuoto o meno, come mostrato di seguito -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
var someDict3:[Int:String] = [Int:String]()

print("someDict1 = \(someDict1.isEmpty)")
print("someDict2 = \(someDict2.isEmpty)")
print("someDict3 = \(someDict3.isEmpty)")

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

someDict1 = false
someDict2 = false
someDict3 = true