6.2 Πρόσβαση στις εγγραφές ενός λεξικού

Στην Python, τα λεξικά είναι μια δομή δεδομένων που αποθηκεύει τις εγγραφές τους σε ζεύγη “key:value”. Ένα λεξικό είναι μια μη διατεταγμένη συλλογή, όπου οι εγγραφές προσπελαύνονται με βάση το κλειδί τους.

Για να αποκτήσετε πρόσβαση στα αντικείμενα ενός λεξικού, μπορείτε να αναφερθείτε στο κλειδί τους χρησιμοποιώντας αγκύλες ή μπορείτε να χρησιμοποιήσετε τη μέθοδο get().

Αν αναφερθείτε σε ένα μη υπαρκτό κλειδί, θα προκληθεί ένα σφάλμα. Για αυτόν τον λόγο, συνιστάται να χρησιμοποιείτε τη μέθοδο get().

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

Παράδειγμα:

car = {
  "brand": "Ford",  # Ορίζουμε το κλειδί "brand" με την τιμή "Ford"
  "model": "Mustang",  # Ορίζουμε το κλειδί "model" με την τιμή "Mustang"
  "year": 1964  # Ορίζουμε το κλειδί "year" με την τιμή 1964
}

print(car["model"])  # Εκτυπώνει την τιμή που αντιστοιχεί στο κλειδί "model", δηλαδή "Mustang"

Ο παραπάνω κώδικας δημιουργεί ένα λεξικό με όνομα car. Το λεξικό περιέχει τρία ζεύγη κλειδιού-τιμής. Το κλειδί "brand" αντιστοιχεί στη μάρκα του αυτοκινήτου, που σε αυτήν την περίπτωση είναι "Ford". Το κλειδί "model" αντιστοιχεί στο μοντέλο του αυτοκινήτου, που είναι "Mustang". Τέλος, το κλειδί "year" αντιστοιχεί στο έτος κατασκευής του αυτοκινήτου, που είναι 1964.

Στη συνέχεια, η γραμμή print(car["model"]) εκτυπώνει την τιμή που αντιστοιχεί στο κλειδί "model". Αυτό σημαίνει ότι εκτυπώνεται η τιμή "Mustang", που είναι το μοντέλο του αυτοκινήτου. Αν το κλειδί που αναφέρετε δεν υπάρχει στο λεξικό, θα προκληθεί σφάλμα.

Στην Python υπάρχει η μέθοδος get() που μπορεί να χρησιμοποιηθεί για να πάρετε την τιμή που αντιστοιχεί σε ένα συγκεκριμένο κλειδί από ένα λεξικό. Η get() δέχεται ένα κλειδί ως παράμετρο και επιστρέφει την αντίστοιχη τιμή αν το κλειδί υπάρχει στο λεξικό, αλλιώς επιστρέφει ένα προκαθορισμένο τιμή που μπορείτε να ορίσετε.

παράδειγμα:

my_dict = {"apple": 3, "banana": 5, "cherry": 2}

quantity = my_dict.get("banana")
print(quantity)  # Εκτυπώνει 5

nonexistent = my_dict.get("orange")
print(nonexistent)  # Εκτυπώνει None

default_value = my_dict.get("orange", 0)
print(default_value)  # Εκτυπώνει 0

Στο παράδειγμα αυτό, η get("banana") επιστρέφει την τιμή 5, καθώς το κλειδί “banana” υπάρχει στο λεξικό. Η get("orange") επιστρέφει None, καθώς το κλειδί “orange” δεν υπάρχει. Τέλος, η get("orange", 0) επιστρέφει την τιμή 0, καθώς το κλειδί “orange” δεν υπάρχει και έχει οριστεί η προκαθορισμένη τιμή 0.

[adinserter block=”2″]

Παράδειγμα:

thisdict = {
  "brand": "Ford",  # Το κλειδί "brand" αντιστοιχεί στη μάρκα "Ford"
  "model": "Mustang",  # Το κλειδί "model" αντιστοιχεί στο μοντέλο "Mustang"
  "year": 1964  # Το κλειδί "year" αντιστοιχεί στο έτος κατασκευής 1964
}

x = thisdict.get("model")  # Ανακτά την τιμή που αντιστοιχεί στο κλειδί "model"
print(x)  # Εκτυπώνει "Mustang"

Στον παραπάνω κώδικα, ορίζεται ένα λεξικό thisdict με τρία ζεύγη κλειδιού-τιμής. Στη συνέχεια, χρησιμοποιείται η μέθοδος get() για να ανακτηθεί η τιμή που αντιστοιχεί στο κλειδί “model”. Η τιμή αυτή (δηλαδή η μάρκα “Mustang”) αποθηκεύεται στη μεταβλητή x. Τέλος, η τιμή της μεταβλητής x εκτυπώνεται, παράγοντας το αποτέλεσμα “Mustang” στην οθόνη.

Η μέθοδος keys() επιστρέφει μια λίστα που περιέχει όλα τα κλειδιά (keys) που υπάρχουν στο λεξικό. Μπορείτε να χρησιμοποιήσετε αυτήν τη μέθοδο για να αποκτήσετε πρόσβαση σε όλα τα κλειδιά του λεξικού και να τα χρησιμοποιήσετε για επανάληψη, αναζήτηση ή οποιαδήποτε άλλη επεξεργασία. Ας δούμε ένα παράδειγμα:

my_dict = {"name": "John", "age": 30, "city": "New York"}

keys_list = list(my_dict.keys())  # Μετατροπή των κλειδιών σε μια λίστα

for key in keys_list:
    # Κώδικας που εκτελείται για κάθε κλειδί
    value = my_dict[key]  # Ανάκτηση της τιμής ανάλογα με το κλειδί
    print(key, value)  # Εκτύπωση του κλειδιού και της αντίστοιχης τιμής

Σε αυτό το παράδειγμα, η μέθοδος keys() χρησιμοποιείται για να ανακτήσει τα κλειδιά του λεξικού my_dict και να τα μετατρέψει σε μια λίστα. Έπειτα, μπορούμε να περάσουμε μέσω αυτής της λίστας με τη χρήση μιας for επανάληψης και να προσπελάσουμε κάθε κλειδί του λεξικού για να ανακτήσουμε την αντίστοιχη τιμή του και να την επεξεργαστούμε κατάλληλα.

Είναι σημαντικό να σημειώσουμε ότι η μέθοδος keys() επιστρέφει μια προβλέψιμη δομή, γνωστή και ως “dictionary view”, η οποία δεν είναι μια απλή λίστα. Παρόλα αυτά, μπορεί να χρησιμοποιηθεί σε πολλές λειτουργίες που απαιτούν μια λίστα.

Για παράδειγμα, μπορούμε να χρησιμοποιήσουμε τη μέθοδο keys() σε μια for επανάληψη για να επαναλάβουμε πάνω από τα κλειδιά του λεξικού:

my_dict = {"apple": 1, "banana": 2, "cherry": 3}

for key in my_dict.keys():
    # Κώδικας που εκτελείται για κάθε κλειδί
    print(key)  # Εκτύπωση του κλειδιού

Επίσης, μπορούμε να μετατρέψουμε την dictionary view σε μια κανονική λίστα χρησιμοποιώντας τη συνάρτηση list():

my_dict = {"apple": 1, "banana": 2, "cherry": 3}
keys_list = list(my_dict.keys())
print(keys_list)  # Εκτύπωση της λίστας με τα κλειδιά

Στο παράδειγμα αυτό, η μέθοδος keys() χρησιμοποιείται για να αποκτηθούν τα κλειδιά του λεξικού και η συνάρτηση list() μετατρέπει τη dictionary view σε μια κανονική λίστα, που μπορεί να χρησιμοποιηθεί σε πολλές λειτουργίες που απαιτούν μια λίστα.

Μπορείτε να ανακτήσετε μια λίστα με όλες τις τιμές στο λεξικό χρησιμοποιώντας τη μέθοδο values(). Αυτή η μέθοδος επιστρέφει μια προσωρινή λίστα που περιέχει όλες τις τιμές του λεξικού.

[adinserter block=”3″]

Εδώ είναι ένα παράδειγμα χρήσης της μεθόδου values():

my_dict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}

values_list = list(my_dict.values())
print(values_list)  # Εκτύπωση της λίστας με τις τιμές του λεξικού

Σε αυτό το παράδειγμα, η μέθοδος values() καλείται στο my_dict για να επιστρέψει μια προσωρινή λίστα με τις τιμές “Ford”, “Mustang” και 1964. Στη συνέχεια, η list() χρησιμοποιείται για να μετατρέψει αυτήν την προσωρινή λίστα σε μια κανονική λίστα values_list. Τέλος, η values_list εκτυπώνεται, δίνοντας το αποτέλεσμα:

['Ford', 'Mustang', 1964]

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

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

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

# Αποθηκεύουμε τα κλειδιά του λεξικού στη μεταβλητή keys
keys = thisdict.keys()

print(keys)  # Εκτύπωση των κλειδιών του λεξικού
# Αναμένονται τα αποτελέσματα: dict_keys(['brand', 'model', 'year'])

# Προσθήκη νέου ζεύγους κλειδιού-τιμής στο λεξικό
thisdict["color"] = "red"

print(keys)  # Εκτύπωση των κλειδιών του λεξικού
# Αναμένονται τα αποτελέσματα: dict_keys(['brand', 'model', 'year', 'color'])

Στον παραπάνω κώδικα, δημιουργούμε ένα λεξικό με το όνομα thisdict. Το λεξικό περιέχει τρία ζεύγη κλειδιού-τιμής: “brand” με τιμή “Ford”, “model” με τιμή “Mustang” και “year” με τιμή 1964.

Στη συνέχεια, αποθηκεύουμε τα κλειδιά του λεξικού στη μεταβλητή keys χρησιμοποιώντας τη μέθοδο keys(). Έπειτα, εκτυπώνουμε τα κλειδιά με τη χρήση της ενσωματωμένης συνάρτησης print() και της μεταβλητής keys.

Στο επόμενο βήμα, προσθέτουμε ένα νέο ζεύγος κλειδιού-τιμής στο λεξικό, με κλειδί “color” και τιμή “red”. Έπειτα, εκτυπώνουμε ξανά τα κλειδιά του λεξικού και βλέπουμε ότι πλέον περιλαμβάνουν και το κλειδί “color”.

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

my_dict = {"apple": 2, "banana": 3, "orange": 5}  # Δημιουργία ενός λεξικού με κλειδιά και τιμές
my_values = my_dict.values()  # Ανάκτηση των τιμών του λεξικού

print(my_values)  # Εκτύπωση των τιμών του λεξικού

my_dict["pear"] = 4  # Προσθήκη νέου κλειδιού-τιμής στο λεξικό

print(my_values)  # Εκτύπωση των τιμών του λεξικού μετά την προσθήκη

Στο παράδειγμα, αρχικά δημιουργούμε ένα λεξικό με τρία ζεύγη κλειδιού-τιμής: “apple”: 2, “banana”: 3 και “orange”: 5. Στη συνέχεια, χρησιμοποιούμε τη μέθοδο values() για να ανακτήσουμε μια προβολή των τιμών του λεξικού. Το αποτέλεσμα αποθηκεύεται στη μεταβλητή my_values και εκτυπώνεται, προκαλώντας την εμφάνιση των τιμών του λεξικού: [2, 3, 5].

Στη συνέχεια, προσθέτουμε ένα νέο ζεύγος κλειδιού-τιμής “pear”: 4 στο λεξικό. Όταν εκτυπώνουμε ξανά τη μεταβλητή my_values, παρατηρούμε ότι οι τιμές δεν αλλάζουν αυτόματα. Αυτό συμβαίνει επειδή η μεταβλητή my_values αποθηκεύει μια προβολή των τιμών του λεξικού κατά τη στιγμή που κληθεί η μέθοδος values(). Για να ενημερωθεί η μεταβλητή my_values με τις νέες τιμές, θα πρέπει να επανακατασκευαστεί η προβολή μετά από την προσθήκη του νέου κλειδιού-τιμής.

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

my_dict = {'apple': 1, 'banana': 2, 'cherry': 3}
keys_list = my_dict.keys()   # Αποθηκεύει τα κλειδιά του λεξικού σε μια λίστα
values_list = my_dict.values()   # Αποθηκεύει τις τιμές του λεξικού σε μια λίστα

my_dict['orange'] = 4   # Προσθέτει ένα νέο ζεύγος κλειδιού-τιμής στο λεξικό

print(keys_list)   # Εκτυπώνει τη λίστα των κλειδιών
print(values_list)   # Εκτυπώνει τη λίστα των τιμών

Στον παραπάνω κώδικα, αποθηκεύουμε τα κλειδιά του λεξικού στη λίστα keys_list και τις τιμές του λεξικού στη λίστα values_list. Στη συνέχεια, προσθέτουμε ένα νέο ζεύγος κλειδιού-τιμής, με κλειδί “orange” και τιμή 4, στο λεξικό. Όταν εκτυπώνουμε τις λίστες keys_list και values_list, βλέπουμε ότι έχουν ενημερωθεί και περιλαμβάνουν τα νέα κλειδιά και τιμές του λεξικού.

Η μέθοδος items() επιστρέφει μια λίστα με όλα τα ζεύγη κλειδιού-τιμής του λεξικού σε μορφή tuple. Κάθε tuple περιέχει ένα ζεύγος κλειδιού-τιμής.

[adinserter block=”4″]

Παράδειγμα:

Ας δούμε ένα παράδειγμα εκτέλεσης:

my_dict = {"apple": 2, "banana": 3, "orange": 5}
my_items = my_dict.items()
print(my_items)

Το παραπάνω κομμάτι κώδικα θα εκτυπώσει:

dict_items([('apple', 2), ('banana', 3), ('orange', 5)])

Το αποτέλεσμα είναι μια λίστα από tuples που περιέχει τα ζεύγη κλειδιού-τιμής του λεξικού. Κάθε tuple αναπαριστά ένα ζεύγος, όπου το πρώτο στοιχείο είναι το κλειδί και το δεύτερο στοιχείο είναι η τιμή.

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

my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}  # Δημιουργία ενός λεξικού με τρία ζεύγη κλειδιού-τιμής
my_items = my_dict.items()  # Αποθήκευση των ζευγών κλειδιού-τιμής του λεξικού σε μια μεταβλητή

print(my_items)  # Εκτύπωση των ζευγών κλειδιού-τιμής

my_dict['country'] = 'USA'  # Προσθήκη νέου ζεύγους κλειδιού-τιμής στο λεξικό

print(my_items)  # Εκτύπωση των ζευγών κλειδιού-τιμής (αναμένεται να είναι τα ίδια με πριν)

Το παραπάνω πρόγραμμα δημιουργεί ένα λεξικό my_dict με τρία ζεύγη κλειδιού-τιμής: ‘name’: ‘John’, ‘age’: 30 και ‘city’: ‘New York’. Στη συνέχεια, αποθηκεύει τα ζεύγη κλειδιού-τιμής του λεξικού στη μεταβλητή my_items χρησιμοποιώντας τη μέθοδο items(). Η εκτύπωση της μεταβλητής my_items θα εμφανίσει όλα τα ζεύγη κλειδιού-τιμής του λεξικού.

Στη συνέχεια, προστίθεται ένα νέο ζεύγος κλειδιού-τιμής στο λεξικό my_dict, με κλειδί ‘country’ και τιμή ‘USA’. Ωστόσο, η μεταβλητή my_items δεν ενημερώνεται αυτόματα με τις αλλαγές που γίνονται στο λεξικό. Έτσι, η εκτύπωση της my_items θα εμφανίσει ακόμη τα αρχικά ζεύγη κλειδιού-τιμής, χωρίς να περιλαμβάνει το νέο ζεύγος που προστέθηκε.

Παρακάτω έχουμε ένα παράδειγμα που δείχνει πως η λίστα των tuples που παίρνουμε από τη μέθοδο items() ανανεώνεται όταν προσθέτουμε νέα στοιχεία στο λεξικό:

my_dict = {"one": 1, "two": 2, "three": 3}

# Αρχική λίστα των tuples
items_list = list(my_dict.items())
print(items_list)  # Εκτύπωση: [('one', 1), ('two', 2), ('three', 3)]

# Προσθήκη νέου στοιχείου στο λεξικό
my_dict["four"] = 4

# Ανανέωση της λίστας των tuples
items_list = list(my_dict.items())
print(items_list)  # Εκτύπωση: [('one', 1), ('two', 2), ('three', 3), ('four', 4)]

Στο παραπάνω παράδειγμα, αρχικά δημιουργούμε ένα λεξικό my_dict με τρία ζευγάρια “κλειδί-τιμή”. Χρησιμοποιώντας τη μέθοδο items(), μετατρέπουμε το λεξικό σε μια λίστα από tuples και την αποθηκεύουμε στη μεταβλητή items_list. Στη συνέχεια, εκτυπώνουμε την items_list και παρατηρούμε ότι περιέχει τα τρία αρχικά ζευγάρια.

Έπειτα, προσθέτουμε ένα νέο ζευγάρι “κλειδί-τιμή” στο λεξικό με το κλειδί “four” και την τιμή 4. Αφού γίνεται η προσθήκη, ενημερώνουμε την items_list κάνοντας ξανά χρήση της μεθόδου items(). Όταν εκτυπώνουμε την ανανεωμένη items_list, βλέπουμε ότι περιλαμβάνει τα τέσσερα ζευγάρια “κλειδί-τιμή”, συμπεριλαμβανομένου του νέου που προσθέσαμε.

Αυτό δείχνει ότι η λίστα των tuples από τη μέθοδο items() ανταποκρίνεται στις αλλαγές που γίνονται στο λεξικό, ανανεώνοντας αυτόματα τα στοιχεία της.

Όταν θέλουμε να ελέγξουμε εάν ένα συγκεκριμένο κλειδί υπάρχει σε ένα λεξικό, χρησιμοποιούμε τη λέξη-κλειδί in. Αυτό μας επιτρέπει να εκτελέσουμε μια συνθήκη για να ελέγξουμε την παρουσία του κλειδιού στο λεξικό.

Παράδειγμα:

my_dict = {"apple": 3, "banana": 5, "cherry": 2}

if "banana" in my_dict:
    print("Το κλειδί 'banana' υπάρχει στο λεξικό")
else:
    print("Το κλειδί 'banana' δεν υπάρχει στο λεξικό")

Στο παραπάνω παράδειγμα, ελέγχουμε εάν το κλειδί “banana” υπάρχει στο λεξικό my_dict χρησιμοποιώντας τη συνθήκη if "banana" in my_dict. Εάν το κλειδί υπάρχει, εκτυπώνεται το μήνυμα “Το κλειδί ‘banana’ υπάρχει στο λεξικό”, αλλιώς εκτυπώνεται το μήνυμα “Το κλειδί ‘banana’ δεν υπάρχει στο λεξικό”.

5 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων