Λεξικό Swift (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθετε τι είναι το λεξικό, δημιουργώντας ένα λεξικό και ορισμένες κοινές λειτουργίες στο λεξικό.

Στο προηγούμενο άρθρο Swift Arrays, μάθαμε πώς μπορούμε να αποθηκεύσουμε πολλές τιμές σε μια μεταβλητή / σταθερά. Σε αυτό το άρθρο, θα συζητήσουμε πώς μπορούμε να αποθηκεύσουμε δεδομένα / τιμές ως ζεύγη βασικών τιμών.

Τι είναι το λεξικό;

Ένα λεξικό είναι απλώς ένα κοντέινερ που μπορεί να διατηρήσει πολλαπλά δεδομένα ως ζεύγος κλειδιών-τιμών με έναν τρόπο χωρίς διάταξη.

Κάθε τιμή συσχετίζεται με ένα μοναδικό κλειδί και αποθηκεύει δεδομένα σε μη ταξινομημένη λίστα από τα σύνολα, δηλαδή δεν λαμβάνετε τα στοιχεία με την ίδια σειρά όπως ορίσατε τα στοιχεία στο λεξικό.

Μπορείτε να χρησιμοποιήσετε λεξικό αντί πίνακα όταν χρειάζεται να αναζητήσετε τιμή με κάποιο αναγνωριστικό στη συλλογή. Ας υποθέσουμε ότι μπορεί να θέλετε να κάνετε αναζήτηση στην πρωτεύουσα της χώρας. Σε αυτήν την περίπτωση, θα δημιουργήσετε ένα λεξικό με βασική χώρα και αξία πρωτεύουσα. Τώρα, παίρνετε την πρωτεύουσα από τη συλλογή αναζητώντας τη βασική χώρα.

Με απλούς όρους, συνδυάζετε ένα κλειδί σε μια τιμή. Στο παραπάνω παράδειγμα, συνδυάσαμε μια χώρα με την πρωτεύουσα της.

Πώς να δηλώσετε ένα λεξικό στο Swift;

Μπορείτε να δημιουργήσετε ένα κενό λεξικό καθορίζοντας τον key:valueτύπο δεδομένων μέσα σε αγκύλες ().

Παράδειγμα 1: Δήλωση ενός κενού λεξικού

 let emptyDic:(Int:String) = (:) print(emptyDic) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 (:)

Ή

Μπορείτε επίσης να ορίσετε ένα κενό λεξικό όπως παρακάτω:

 let emptyDic:Dictionary = (:) print(emptyDic) 

Στο παραπάνω πρόγραμμα, έχουμε δηλώσει ένα σταθερό κενόDic τύπου λεξικό με κλειδί τύπου Intκαι τιμή τύπου Stringκαι το αρχικοποιήσαμε με 0 τιμές.

Ή

Επειδή, το Swift είναι μια γλώσσα τύπου συμπερασμάτων, μπορείτε επίσης να δημιουργήσετε λεξικό απευθείας χωρίς να καθορίσετε τον τύπο δεδομένων, αλλά πρέπει να αρχικοποιήσετε με ορισμένες τιμές, ώστε ο μεταγλωττιστής να συμπεράνει τον τύπο του ως:

Παράδειγμα 2: Δήλωση λεξικού με ορισμένες τιμές

 let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 ("b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, " η ": 8)

Στο παραπάνω πρόγραμμα, δηλώσαμε ένα λεξικό χωρίς να ορίσουμε τον τύπο ρητά αλλά αρχικοποιώντας με ορισμένα προεπιλεγμένα στοιχεία.

Το στοιχείο είναι στο κλειδί: ζεύγος τιμών όπου το κλειδί είναι τύπου Stringκαι η τιμή είναι Intτύπου. Δεδομένου ότι το λεξικό είναι μια μη ταξινομημένη λίστα print(someDic)εξάγει τις τιμές με διαφορετική σειρά από ό, τι ορίζεται.

Παράδειγμα 3: Δημιουργία λεξικού από δύο πίνακες

Μπορούμε επίσης να δημιουργήσουμε ένα λεξικό χρησιμοποιώντας πίνακες.

 let customKeys = ("Facebook", "Google", "Amazon") let customValues = ("Mark", "Larry", "Jeff") let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 ("Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark")

Στο παραπάνω πρόγραμμα, zip(customKeys,customValues)δημιουργεί μια νέα ακολουθία πλειάδας με κάθε στοιχείο να αντιπροσωπεύει την τιμή από customKeys και customValues. Για να μάθετε περισσότερα σχετικά με τον τρόπο λειτουργίας του zip, επισκεφτείτε το Swit zip.

Τώρα, μπορούμε να περάσουμε αυτήν την ακολουθία στον Dictionary(uniqueKeysWithValues:)αρχικοποιητή και να δημιουργήσουμε ένα νέο Λεξικό. Επομένως, print(newDictionary)εξάγει ένα νέο λεξικό με στοιχεία από δύο πίνακες.

Πώς να αποκτήσετε πρόσβαση σε στοιχεία λεξικού στο Swift;

Ως πίνακες, μπορείτε να αποκτήσετε πρόσβαση σε στοιχεία ενός λεξικού χρησιμοποιώντας σύνταξη συνδρομής. Πρέπει να συμπεριλάβετε το κλειδί της τιμής στην οποία θέλετε να αποκτήσετε πρόσβαση μέσα σε αγκύλες αμέσως μετά το όνομα του λεξικού.

Παράδειγμα 4: Πρόσβαση σε στοιχεία ενός λεξικού

 let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic("a")) print(someDic("h")) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 Προαιρετικό (1) Προαιρετικό (8) 

Μπορείτε επίσης να αποκτήσετε πρόσβαση σε στοιχεία ενός λεξικού χρησιμοποιώντας βρόχους εισόδου.

Παράδειγμα 5: Πρόσβαση σε στοιχεία ενός λεξικού με βρόχο εισόδου

 let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) for (key,value) in someDic ( print("key:(key) value:(value)") ) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 κλειδί: τιμή b: 2 κλειδί: μια τιμή: 1 κλειδί: τιμή i: 9 κλειδί: τιμή c: 3 κλειδί: τιμή e: 5 κλειδί: τιμή f: 6 κλειδί: τιμή g: 7 

Πώς να τροποποιήσετε τα στοιχεία λεξικού στο Swift;

Μπορείτε να προσθέσετε στοιχεία στο λεξικό χρησιμοποιώντας σύνταξη συνδρομητή. Πρέπει να συμπεριλάβετε νέο κλειδί ως ευρετήριο συνδρομής και να ορίσετε μια νέα τιμή του τύπου από το Λεξικό.

Παράδειγμα 6: Ρύθμιση στοιχείων σε λεξικό

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Japan") = "Tokyo" print(someDictionary) 

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:

 ("Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu")

In the above example, we've created a new key-value pair "Japan": "Tokyo" in the given dictionary by using the subscript syntax.

You can also use subscript syntax to change the value associated with a particular key as:

Example 7: Changing elements of a dictionary

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Nepal") = "KATHMANDU" print(someDictionary) 

When you run the program, the output will be:

 ("China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU")

Some helpful built-in Dictionary functions & properties

1. isEmpty

This property determines if an dictionary is empty or not. It returns true if a dictionary does not contain any value otherwise returns false.

Example 8: How isEmpty works?

 let someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") print(someDictionary.isEmpty) 

When you run the program, the output will be:

 false

2. first

This property is used to access the first element of a dictionary.

Example 9: How first works?

 let someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") print(someDictionary.first) 

When you run the program, the output will be:

 Optional((key: "China", value: "Beijing"))

3. count

This property returns the total number of elements (key-value pair) in a dictionary.

Example 10: How count works?

 let someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") print(someDictionary.count) 

When you run the program, the output will be:

 3

4. keys

This property returns all the keys inside the dictionary.

Example 11: How keys works?

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let dictKeys = Array(someDictionary.keys) print(dictKeys) 

When you run the program, the output will be:

 ("China", "India", "Nepal")

Similarly, you can use values to get all the values inside the dictionary.

5. removeValue

This function removes and returns the value specified with the key from the dictionary. Both key value pair will be removed from the dictionary.

Example 12: How removeValue() works?

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary.removeValue(forKey: "Nepal") print(val) print(someDictionary) 

When you run the program, the output will be:

 Optional("Kathmandu") ("India": "NewDelhi", "China": "Beijing") 

Similarly, you can also use removeAll function to empty an dictionary.

Things to Remember

1. While using subscript syntax to access elements of an dictionary in Swift, you must be sure the key lies in the index otherwise you will get a nil value. Let's see this in example:

Example 13: Key must be present

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary("Japan") print(val) 

When you run the program, the output will be:

 nil

In the above program, there is no key Japan. So when you try to access the value of the key "Japan", you will get a nil value.

2. Likewise, key-values are case-sensitive in Swift, so you must make sure the correct cased key/value is used. Otherwise, you will get a nil value. Let's see this in example:

Example 14: Keys are case-sensitive

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary("nepal") print(val) 

When you run the program, the output will be:

 nil

In the above program, there is no key nepal. So when you try to access the value of the key "nepal", you will get a nil value.

3. There is also a way to provide a default value if the value for a given key does not exist. Let's see this in example:

Example 12: Default value for non-existent key

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary("nepal", default:"Not Found") print(val) 

When you run the program, the output will be:

 Not Found

Στο παραπάνω πρόγραμμα, έχουμε καθορίσει μια τιμή Not Found στην προεπιλεγμένη παράμετρο κατά την πρόσβαση στο λεξικό. Εάν η τιμή δεν υπάρχει για το κλειδί, η προεπιλεγμένη τιμή επιστρέφεται διαφορετικά η τιμή επιστρέφεται.

Στην περίπτωσή μας, το κλειδί "nepal" δεν υπάρχει, επομένως το πρόγραμμα επιστρέφει Not Found .

ενδιαφέροντα άρθρα...